2011-09-27 164 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

相關問題