2009-05-30 12 views
0

sender_idmessage_id의 고유 한 레코드 만 가질 수 있도록 다음 코드를 어떻게 변경합니까?레일스는 중복이없는 검색어를 찾습니다.

@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 by은 아마도 더 나은 선택 일 것입니다.

RolesMessages.find_by_sql("query goes here") 

+0

그래서 내가 실현 (나 자신이 ... 미친 내게 전화 쿼리를 만들기 위해 선호)이 종류 : :group => 'sender_id, message_id'은 아마 더 나은

당신도 뭔가 같이 할 수있는 요구 사항을 충족합니다 하지만 find_by_sql은 ActiveRecord 대신 배열 출력을 생성하는데, 이는 최상의 솔루션이 아닙니다. –

관련 문제