查找第一条匹配记录的最有效方法是什么? 例如user =在用户列表中找到第一个Fred
答案 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
在更多细节上,take
与first
的顺序有所不同。根据主键对记录重新排序后,first
将返回第一条记录,而take
将返回最先找到的内容。
因此,虽然使用where().take
等效于find_by
,并且选择是否使用其中一个只是一个品味问题,但where().first
与find_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的第一个用户