【问题标题】:What is the difference between find and find_by?find 和 find_by 有什么区别?
【发布时间】:2017-07-28 22:26:15
【问题描述】:

我从 rails 文档知道find 将导致RecordNotFound 错误。但是,如果没有找到记录,find_by 方法只会返回 nil。返回nil 对我来说似乎更直观且总体上安全,所以我想知道使用find 方法是否比find_by 方法有任何好处?

例如,以下有什么区别:

myRecord.find(1)

myRecord.find_by(id: 1) 

如果唯一的区别是find 在未找到记录时引发错误,我真的看不出使用find 的好处。

编辑

对于所有跳出我的问题并说已经回答的人,你错了。我明确表示我知道find 在找不到记录时会返回错误(这是其他人在回答中强调的)并且find_by 返回零。我想知道是否还有其他差异。

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

在您的具体示例中,除了您提到的 errornil 之外,它们两者之间几乎没有区别。是要处理 error 还是 nil 完全取决于您。

关于理解何时 error 优于 nil 以及反之亦然,请阅读this

如果您通过 id 以外的属性进行搜索,则使用 find 将不起作用,因为它只能通过元素的 id 访问元素。

【讨论】:

  • 感谢您链接到那个 SO 问题。正如你所说,DHH 有一个非常好的解释。对我的问题发表评论的其他人显然不理解我的问题的意图。谢谢。
  • 当然可以。如果您想了解两者之间的实现差异,您还可以通过文档查看源代码。 apidock.com/rails/ActiveRecord/Base/find/class 。向下滚动并点击“显示源”
猜你喜欢
  • 1970-01-01
  • 2017-03-19
  • 2018-01-13
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
相关资源
最近更新 更多