Rails是否被弃用?

时间:2015-09-26 00:16:00

标签: ruby-on-rails activerecord

是否弃用了Rails find方法?

在过去,find(1)是通过id找到的首选方式。

使用find_by(id:1)代替find(1)是否更好?

3 个答案:

答案 0 :(得分:4)

这两种方法都没有被弃用(据我所知)。 findfind_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")