我从rails文档中知道find
会导致RecordNotFound
错误。但是,如果未找到记录,则find_by
方法仅返回nil
。返回nil
对我来说似乎更直观,而且总体上更安全,所以我想知道使用find
方法比find_by
方法有什么好处?
例如,以下两者之间有什么区别:
myRecord.find(1)
和
myRecord.find_by(id: 1)
如果唯一的区别是find
找不到记录时引发错误,我真的看不到使用find
的好处。
编辑
对于所有跳上我的问题并说它已经得到回答的人,你错了。我清楚地表明,我知道当找不到记录时find
返回错误(这是其他人在答案中强调的(,并且find_by
返回 nil。我想知道是否有任何其他差异。
在您的具体示例中,除了您提到的错误与nil之外,它们之间几乎没有区别。是否要处理错误或零完全取决于您。
有关理解错误何时优于nil的良好解释,反之亦然,请阅读此内容。
如果您使用find按 id 以外的属性进行搜索将不起作用,因为它只能通过元素的id访问元素。