【问题标题】:Sorting a User object对用户对象进行排序
【发布时间】:2013-06-21 10:41:25
【问题描述】:
@users = User.all

 <% @users.each do |user| %>

     <%= user.name %>

 <% end %>

如何按名称而不是 id 对其进行排序

【问题讨论】:

  • 值得展示您如何查询以设置值@users,因为如果可能的话,这将是进行排序的最佳点。
  • 请注意,默认情况下没有顺序,因为如果您不明确指定,SQL 不保证有顺序。任何感知到的顺序都是巧合。

标签: ruby-on-rails ruby scope


【解决方案1】:
@users = User.order('name ASC')

在你的控制器中

按照建议,您也可以设置default_scope,而不是到处调用User.order('name asc')

default_scope order('name ASC')

或者你可以设置范围:

scope :name_ordered, order('name ASC')

并调用它

User.name_ordered

【讨论】:

    【解决方案2】:

    除了 Marek Lipka 的回答:可能你想每次都让用户有订单,然后添加到模型中

    default_scope order('name asc')
    

    而不是像把它放在任何地方

    User.order('name asc').all
    

    【讨论】:

    • 请注意,只要您想要不同的顺序,就必须取消关系范围。
    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2017-06-07
    • 2018-02-13
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    相关资源
    最近更新 更多