Sql where vs.find()。关于它们的使用建议是什么?
在什么情况下应该使用Model.where或Model.find()?每个地方都有关于差异的信息,但是对于它们的使用建议是什么呢?我们使用Sql where vs.find()。关于它们的使用建议是什么?,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,在什么情况下应该使用Model.where或Model.find()?每个地方都有关于差异的信息,但是对于它们的使用建议是什么呢?我们使用find任何时候只有一个结果必须可见,页面才有用。例如,/item/:id。我们拯救NotFound异常,然后显示一个404错误页面(如果捕捉到) 当可能存在缺失项时,我们使用where,如果有意义,则使用first 我们使用find任何时候只有一个结果必须可见,页面才有用。例如,/item/:id。我们拯救NotFound异常,然后显示一个404错误页面(如
find
任何时候只有一个结果必须可见,页面才有用。例如,/item/:id
。我们拯救NotFound异常,然后显示一个404错误页面(如果捕捉到)
当可能存在缺失项时,我们使用
where
,如果有意义,则使用first
我们使用find
任何时候只有一个结果必须可见,页面才有用。例如,/item/:id
。我们拯救NotFound异常,然后显示一个404错误页面(如果捕捉到)
当可能存在缺失项时,我们使用
where
,如果有意义,则使用first
其中
实际上不获取任何内容-它返回一个范围为您刚才指定的条件的ActiveRecord::Relation
。这意味着您可以将其与内容链接起来:更多调用where
,join
,limit
等
另一个上的find
可以执行查询并返回数组或对象(取决于您是执行find:all
还是find:first
),因此您无法将内容链接到它的后面
您可以传递条件、联接等来查找,但这样做将被弃用。您实际上不需要调用find
,因为您可以在需要时让ActiveRecord::Relation
将其自身变成一个数组,也可以先调用关系上的all
/last
,从而实现同样的效果调用find
就可以了
关于
find
唯一更方便的事情是当您有一个id(或id数组)时并希望加载相应的模型对象。其中
实际上不获取任何内容-它返回一个ActiveRecord::Relation
,范围为您刚才指定的条件。这意味着您可以将其与内容链接:更多调用其中
,连接
,限制
等
另一个上的find
可以执行查询并返回数组或对象(取决于您是执行find:all
还是find:first
),因此您无法将内容链接到它的后面
您可以传递条件、联接等来查找,但这样做将被弃用。您实际上不需要调用find
,因为您可以在需要时让ActiveRecord::Relation
将其自身变成一个数组,也可以先调用关系上的all
/last
,从而实现同样的效果调用find
就可以了
只有当您有一个id(或id数组)并希望加载相应的模型对象时,find
才更方便