4

我见过人们将他们的代码从 Model.find_by_x(x) to Model.find_by(x: x) ( example ) 重写,我想知道是不是该做一些家务了。

真的find_by...被淘汰了吗?(一些证据/讨论会很好。)这个Rails 提交暗示它是。同样在ActiveRecord::Base 文档中,此提交更改它被称为“轻度弃用”。

提取的dynamic_finders gem声称它不是:“请注意 find(primary_key)、find_by... 和 find_by...! 不被弃用。”

并且还在4.0 发行说明中:“所有动态方法,除了 find_by_... 和 find_by_...!已弃用”。

4

1 回答 1

6

我意识到这个答案缺乏证据/讨论,但我只想说对我来说应该Model.find_by_attribute弃用诸如此类的东西是有道理的——即你应该这样对待它们并远离它们,即使它们是未正式弃用。原因是这些方法必须通过 method_missing 才能发挥作用。因此,它们不如使用which 在幕后使用 ARel: 快。这有帮助吗?find_by(x: y)where(x: y).take

于 2013-08-31T13:17:07.140 回答