2009-05-30 9 views
0

Comment puis-je modifier le bit suivant du code afin que je ne dispose que des enregistrements avec distincts sender_id et message_id combinaisons:Rails trouver requête sans doublons

@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') 

Répondre

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

Edit: maintenant que j'y pense, groupe par est probablement une meilleure option. :group => 'sender_id, message_id' satisfera probablement mieux à vos besoins

vous pouvez aussi faire quelque chose comme:

RolesMessages.find_by_sql("query goes here") 

(je préfère faire la requête moi-même ... appelez-moi fou)

+0

Je sais que c'est genre de vieux, mais find_by_sql produit une sortie de tableau au lieu d'un ActiveRecord, ce qui peut ne pas être la meilleure solution. –

Questions connexes