Ruby神奇的nil.id

今天早上遇到了一个问题,网站上有几个奇怪的数据,他们的用户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 的帖子 其实很老的问题了,汗 :o
[url]http://www.iteye.com/topic/514383[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值