gpt4 book ai didi

ruby-on-rails - Rails .where 与 .find

转载 作者:行者123 更新时间:2023-12-03 05:20:25 26 4
gpt4 key购买 nike

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

当我期望一个结果时,我应该使用 Model.find 吗?当我期望多个结果时,我应该使用 Model.where 吗?

最佳答案

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

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

    虽然 find 可以返回记录数组(而不是关系),但如果给定 ID 列表,则自 Rails 3 起首选使用 wherefind 现在是 deprecated or gone entirely .

所以,是的,如果您只想要并期望单个对象,那么使用 find 会更容易,否则您必须调用 Model.where.first

请注意,从 Rails 4.0 开始,find 的旧式哈希选项和许多动态 find_ 方法已被弃用 ( see relevant release notes )。

关于ruby-on-rails - Rails .where 与 .find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com