在Rails 3中,当我写道:
@users = User.limit(10).sort_by(&:name)
它按名称顺序给了我10个用户,但不是按照我想要的字母顺序排列的前10个用户。我做错了什么?
谢谢!
答案 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
方法。