我注意到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(使用前将#替换为@)