今天早上遇到了一个问题,网站上有几个奇怪的数据,他们的用户id都是4,但是我们网站上的用户id设置的是最低 1000 并且是依次递增的,怎么回事呢
几个人共同探讨,查看程序,讨论逻辑,最后都是没有结论
接下来有人突然想起了下面这件事情
---------------------------------------------------------------------------------
前几天我在网上看文章发现了一个很有趣的问题
就是ruby对 nil.object_id 的定义
>> nil.object_id
=> 4
我看着挺有意思,就跟同事共享了一下
-------------------------------------------------------------------------------
再去看代码,果然是用户在没有登录的情况下做了操作,产生了 nil.id
-----------
另外还有一个小插曲
那就是开发模式与产品模式下运行nil.id 结果是不一样的
开发模式(development)下或直接抛异常
>> nil.id
RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
from (irb):1
而产品模式(production)下则仅仅是警告,有返回值
>> nil.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 4
真真的是陷阱无处不在啊
------------------------------------------------------------------------------
好吧,问题到此结束
除此之外令人感到很神棍的事情就是,前几天我看到了这个东西,今天竟然奇迹般的就用上了
关于nil.object_id 的帖子 其实很老的问题了,汗
http://www.iteye.com/topic/514383
分享到:
相关推荐
方便的 Ruby 对象容器,提供更清晰的视图 安装 容器可用作 RubyGem: $ gem install container 基本用法:容器 容器同时充当数组和哈希 tags = Container . new tags << "Master" tags << "Disabled...
安装 将以下内容添加到您的Gemfile中 gem "ruby-pardot" 用法 身份验证 为了使用此客户端,必须指定从Salesforce OAuth检索的访问令牌。 有关更多信息,请参见[ 身份验证文档]... new nil , nil , nil , version ,
卢米纳蒂用于与 Luminati.io 网络通信的 ... get_connection ( country : nil , dns_resolution : nil , session : nil )session_id = connection [ :session_id ]proxy_user = connection [ :username ]proxy_passw
strong_parameters 这是strong_parameters的扩展,增加了类型检查和转换功能。... Rails将空数组转换为nil,因此通常使用Parameters.array | Parameters.nil Parameters.array | Parameters.nil是必需的。
find ( some_id )end 但是,如果计算结果可以为nil或false或该方法使用参数,则此方法不起作用。 如果您的方法需要多行,您还将需要额外的begin / end行: def user @user ||= begin some_id = calculate_id klass ...
1.try 永远不会抛出异常 在 没有的时候 返回 nil 代码如下: province_id = Province.find_by_name(prov).try(:id) 2.find(:first, :condotions) 方法 不言而与 代码如下: mobile_info = MobileInfo.find(:...
Rapiflash Ruby这个官方 gem 是 Rapiflash API 的包装器,允许开发人员从世界各地的 ...Flood:0x0000000152c398 @id=1, @normal_level=4.5, @current_level=5.0, @flooded=false, @upstream=nil, @location="Australia
弗雷德 这是St. Louis Federal Reserve Economic Data 的Ruby包装器。 安装 作为宝石: ... >> fred.category(nil, :category_id => '125') => <#Hashie::Mash categories=<#Hashie::Mash catego
示例类Category “ root”)child1 = root.children.create(“名称” =>“ child1”)subchild1 = child1 .children.create(“ name” =>“ subchild1”)root.parent#=> nil child1.parent#=> root root....
在 Objective-C 或 Ruby 中创建动态网络爬虫。 用法 创建一个刮板: # import " IGScraperKit.h " IGScraper* scraper = [IGScraper scraperWithBlock: ^ id (IGXMLNode* node, NSString * url) { return [[[node...
应该使用默认为nil的ID初始化学生,一个名称和一个成绩。 在本实验中,我们在config/environment.rb文件中为您建立了到数据库的连接: DB = { :conn => SQLite3 :: Database . new ( "db/students.db" ) } 在...
应该使用默认为nil的ID初始化学生,一个名称和一个成绩。 在本实验中,我们在config/environment.rb文件中为您建立了到数据库的连接: DB = { :conn => SQLite3 :: Database . new ( "db/students.db" ) } 在...
应该使用默认为nil的ID初始化学生,一个名称和一个成绩。 在本实验中,我们在config/environment.rb文件中为您建立了到数据库的连接: DB = { :conn => SQLite3 :: Database . new ( "db/students.db" ) } 在...
应该使用默认为nil的ID初始化学生,一个名称和一个成绩。 在本实验中,我们在config/environment.rb文件中为您建立了到数据库的连接: DB = { :conn => SQLite3 :: Database . new ( "db/students.db" ) } 在...
活动记录添加方法以返回属性哈希,而不是实例化的ActiveRecord对象。 当使用大量记录时,这很有用,...例子> User.where(:email => nil).all_as_hashes=> [ {:id => 123, :name => "Joe User", :email => nil}, {:id =>
Cleverbot 的 Ruby 包装器。 例子 交谈机灵与机灵:: Client.write @params = Cleverbot :: Client . write 'Hi.' @params [ 'message' ] # => "How are you?" @params [ 'sessionid' ] # => "ABC01234567" @...
动态ORM目标解释为什么动态ORM对... 我们可以通过使用类来创建数据库表来实现此映射: class Song attr_accessor :name , :album attr_reader :id def initialize ( id = nil , name , album ) @id = id @name = name
动态ORM 目标 解释为什么动态ORM对我们作为开发人员有用 建立基本的动态ORM 构建一个动态ORM,任何给定的Ruby类都可以使用该ORM ... def initialize ( id = nil , name , album ) @id = id @name = name @al
拆分HMDB所有代谢物XML乔治·L·马龙先生2021年4月21日概述该... 如果当前代谢物的ID为nil ,则检查当前行文本中主要accession标签内的ID,并在找到该行时对其进行分配[n1] 。 如果该行是metabolite关闭标签,则使用当
Litmus :: EmailTest.create({:subject =>``,:body =>''},name = nil) Litmus :: EmailTest.rename(id,new_name) Litmus :: EmailTest.destroy(id) 石蕊:: PageTest.list Litmus :: PageTest.show...