我从rails文档中了解到find
会导致RecordNotFound
错误。但是,如果找不到记录,find_by
方法只会返回nil
。返回nil
对我来说似乎更直观,而且一般都很安全,所以我想知道在find
方法上使用find_by
方法是否有任何好处?
例如,以下内容之间有什么区别:
myRecord.find(1)
和
myRecord.find_by(id: 1)
如果唯一的区别是find
在找不到记录时引发错误,我实际上并没有看到使用find
的好处。
对于那些跳出我的问题然后说它已经得到回答的人来说,你错了。我明确表示,我知道find
在找不到记录时会返回错误(这是其他人在答案中强调的内容)并且find_by
返回nil。我想知道是否还有其他差异。
答案 0 :(得分:4)
在你的具体例子中,除了你提到的错误vs nil之外,它们之间没有什么区别。无论您是想处理错误还是零错都完全取决于您。
对于理解何时错误优于nil的伟大解释,反之亦然阅读this。
如果您使用id以外的属性进行搜索,则使用find将无法正常工作,因为它只能通过其ID访问元素。