查找和find_by有什么区别?



我从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访问元素。

最新更新