`

Ruby神奇的nil.id

    博客分类:
  • ruby
阅读更多
今天早上遇到了一个问题,网站上有几个奇怪的数据,他们的用户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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics