ActiveRecord没有显示正确的记录

时间:2011-10-31 03:44:09

标签: ruby-on-rails ruby-on-rails-3 activerecord

在Rails 3中,当我写道:

@users = User.limit(10).sort_by(&:name)

它按名称顺序给了我10个用户,但不是按照我想要的字母顺序排列的前10个用户。我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

尝试:

@users = User.limit(10).order('name ASC')

答案 1 :(得分:1)

sort_by方法来自Enumerable。因此,为了调用sort_by,ActiveRecord必须从数据库中检索记录; ActiveRecord将首先执行此操作:

User.limit(10)

从数据库中获取10条记录,然后使用它们的名称对这些记录进行排序(在Ruby中)。最终结果是记录将在数据库排序之前从数据库中提取。

解决方案是收听Alex Peattie并使用order方法。