如何设置备用订购系统?

时间:2015-04-21 19:57:25

标签: ruby-on-rails ruby list sorting

我正在打印一份清单,按此命令:

<% @users.order(:number).each do |u| %>
  <%= u.name %>
<% end %>

但有些用户的:number值相同,在这种情况下,记录似乎是根据time_created进行排序的。当记录具有与用于订购它们的属性相同的值时,如何设置要使用的备用或二级订购系统?

2 个答案:

答案 0 :(得分:2)

您可以继续添加order方法。

@users.order(:number, :name, :last_logged_in, :id)

如果数字相同,它将打破与name的关系,然后是last_logged_in,然后是id。这都是在数据库中完成的。

如果您已将数据存储在内存中,则可以使用Ruby的sort_by方法。

答案 1 :(得分:1)

您可能希望使用sort_by代替order

@users.sort_by {|u| [u.number, u.second_option] }

将首先按数字排序,然后如果数字匹配,它将拉出第二个选项的任何内容并进行比较。从技术上讲,你可以根据需要在该数组中输入尽可能多的东西。

编辑:实际上,有一个类似的问题已经回答here