Rails .where 与 .find

2023-11-28

我注意到Model.where即使只有一个结果,方法也始终返回一个数组Model.find方法没有。这有什么原因吗?我想Model.where是自 Rails 3.X 以来的首选函数。

我应该使用Model.find当我期望一个结果并且Model.where当我期望不止一个结果时?


  • where返回一个ActiveRecord::Relation(不是一个数组,尽管它的行为很像一个),这是一个收藏模型对象。如果没有任何内容符合条件,它只会返回一个空关系。

  • find(及其相关动态find_by_columnname方法)返回一个single模型对象。如果没有找到任何内容,ActiveRecord::RecordNotFound引发异常(但不是动态的)find_by_方法)。

    While find如果给定 ID 列表,则可以返回记录数组(而不是关系),使用where自 Rails 3 起成为首选。许多类似的用途find现在已弃用或完全消失.

所以是的,如果你只想要并期望一个对象,使用find更容易,否则你必须打电话Model.where.first.

请注意,旧式哈希选项find以及许多动态find_从 Rails 4.0 开始不推荐使用这些方法(请参阅相关发行说明).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails .where 与 .find 的相关文章

随机推荐