2011-09-27 173 views
0

我有以下的模型对象:如何通过对象的父母进行排序对象的数组

Participants.rb 

belongs_to :user 
belongs_to :board 

Users.rb 

has_many :participants 

Boards.rb 

has_many :participants 

我想,当我从得到的信息由用户的名称下面的数组排序数据库;即类似的:

participants = get_current_board.participants.where(:role => "Participant").order(participants.user.name) 

我该怎么做?

回答

1

尝试 -

participants.sort {|x,y| x.user.name <=> y.user.name } 
+0

这将在Ruby中进行排序,而不是在数据库中进行排序。 – rdvdijk

+0

它来自Ruby。我误解了这个要求。但是我认为如果它在Ruby上完成,那么DB会更好。 – Jayendra

+0

数据库擅长排序。如果排序是微不足道的,并且查询处理大量数据,我宁愿让数据库执行它。 – rdvdijk

1

为了让您的数据库排序:

participants = get_current_board.participants.where(:role => "Participant").joins(:user).order(:users => :name) 
+0

嗨,我试过这个,我得到了这个错误TypeError(不能转换成字符串哈希): 任何想法? – chell

+0

什么是模型中的“角色”,用户中的字符串字段? – rdvdijk

+0

角色是参与者中的字符串字段 – chell

0

参与者= get_current_board.participants.includes(:用户)。凡(:角色=> “参与者”) .order(:users =>:name)

您正在使用此热线加载

+0

这并没有产生任何错误。但它似乎并未影响参与者的秩序。它仍然按照参与者ID的顺序,而不是用户名。有任何想法吗? – chell

相关问题