当您使用nil ID调用find时,或者当您尝试访问不存在的关系对象时,会抛出此错误:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
什么是“哪个会错误地为4”?对于99.9%的人们遇到的无ID错误,这似乎很奇怪/无关紧要。它是旧时代虫子的延续吗?为什么会在那里?
答案 0 :(得分:2)
来自ActiveSupport的NilClass
扩展程序:
Ruby 1.8中存在
#id
(虽然它已被弃用)。由于id
是Active Record模型的基本方法,#id
也被重新定义 提出RuntimeError
并警告用户。她可能想要一个模特 数据库标识符和原始方法返回的4可以 导致晦涩的错误。标志
config.whiny_nils
确定是否启用此功能。 默认情况下,它处于开发和测试模式,并且处于关闭状态 生产模式。
答案 1 :(得分:0)
根据In Ruby why does nil.id return 4? - 在<{1}}上调用.id
时,Ruby 使用返回4;因此,当试图通过nil
查找时,Rails会抛出错误消息,指出如果您尝试使用nil
致电.find
,则会找到nil
。< / p>