2009-05-30 53 views
0

如何更改下面的代碼位,所以我只有記錄具有鮮明sender_idmessage_id組合:Rails的發現查詢,沒有重複

@roles = Role.find_all_by_simulation_id(session[:sim_id]) 
@messages = RolesMessages.find(:all, :conditions => ["sender_id IN (?) ", @roles.map(&:id)], :order => 'created_at DESC') 

回答

1
@messages = RolesMessages.find(:all, :select => 'DISTINCT sender_id, message_id', :conditions => ["sender_id IN (?) ", @roles.map(&:id)], :order => 'created_at DESC') 

編輯:現在我想起來了,通過分組可能是一個更好的選擇。 :group => 'sender_id, message_id'可能會滿足您的需求更好地

你也可以這樣做:

RolesMessages.find_by_sql("query goes here") 

(我喜歡讓自己查詢...叫我瘋了)

+0

所以,我意識到這是一種舊的,但find_by_sql產生一個數組輸出而不是一個ActiveRecord,這可能不是最好的解決方案。 – 2016-01-06 22:45:43