是否弃用了Rails find
方法?
在过去,find(1)
是通过id找到的首选方式。
使用find_by(id:1)
代替find(1)
是否更好?
答案 0 :(得分:4)
这两种方法都没有被弃用(据我所知)。 find
和find_by()
之间的差异是它们在记录不存在时返回的内容。如果不存在ID为23的记录,则可以获得:
Model.find(23)
=> ActiveRecord::RecordNotFound: Couldn't find Model with 'id'=23
或者
Model.find_by(id: 23)
=> nil
如果您在可能存在不存在记录的情况下进行查询,则使用find_by
会更加宽容,因为您获得nil
值而不是异常。
答案 1 :(得分:1)
可能你指的是ActiveRecord::Base#find的弃用,例如 find(:first)和 find(:all),这些已弃用,有利于第一个和所有方法。
已从 rails 3.2 中删除对此方法的支持。
您已使用的方法(ActiveRecord::FinderMethods#find)不会弃用。
答案 2 :(得分:0)
从Rails 4.2.1开始,它不是。 Here是它的API文档(不是官方的,但非常好)。我认为你看的是this method,它在Rails 3.0.0中已被弃用。
我从未使用方法find_by()
。我相信更好/更新的方法是使用where()
方法,如下所示:
User.where(name: "Bob", email: "bob@example.com")