【问题标题】:ActiveRecord not showing right recordsActiveRecord 没有显示正确的记录
【发布时间】:2011-10-31 03:44:09
【问题描述】:

在 Rails 3 中,当我编写时:

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    试试:

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

    【讨论】:

      【解决方案2】:

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

      User.limit(10)
      

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

      解决办法是听Alex Peattie,使用order方法。

      【讨论】:

      • 好的,我接受了亚历克斯的回答,但感谢您的额外解释
      • @user1021325:这很酷,你应该接受他的回答(顺便说一句,这是我的赞成票)。我只是想确保您知道为什么它没有按预期工作。
      猜你喜欢
      • 2018-09-08
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多