如何在活动记录中查找第一个匹配项

时间:2014-01-28 05:56:49

标签: ruby-on-rails ruby

查找第一条匹配记录的最有效方法是什么? 例如user =在用户列表中找到第一个Fred

5 个答案:

答案 0 :(得分:2)

User.find_by(first_name: 'Fred') # it finds the first user http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by

答案 1 :(得分:1)

最有效的方法是使用find_by

User.find_by(name: 'Fred')

此方法已在Rails 4上添加,其定义如下:

def find_by(*args)
  where(*args).take
end

在更多细节上,takefirst的顺序有所不同。根据主键对记录重新排序后,first将返回第一条记录,而take将返回最先找到的内容。

因此,虽然使用where().take等效于find_by,并且选择是否使用其中一个只是一个品味问题,但where().firstfind_by的区别在于不太明显。

  

来源:https://github.com/rubocop-hq/rails-style-guide/issues/76

答案 2 :(得分:0)

如果您想要订购并选择订购结果中的第一条记录,以下也应该有效:

user = User.where(:name => "Fred").order(:age).first

答案 3 :(得分:0)

如果使用find或where命令访问用户模型。它总是会为您提供按created_at排序的第一个条目。您始终可以根据参数对数据进行排序。

答案 4 :(得分:0)

您可以按如下方式使用find_by

   User.find_by_first_name('Fred')

显然,它给Fred的第一个用户