2014-02-26 4 views
1

그룹을 사용하는 쿼리의 모든 첫 번째/최고 값을 어떻게 찾을 수 있습니까? 그래서 각 그룹 달의 첫 번째 레코드를 찾고 싶습니다.group_by의 각 그룹에서 첫 번째 값을 검색하는 방법은 무엇입니까?

class Log < ActiveRecord::Base 
    belongs to :foo 
    attr_accessible :month, :votes, :foo_id 
    # ... 
end 

그래서 위 모델에서 매 달마다 가장 많은 기록을 검색하고 싶습니다. 기록은 투표의 내림차순으로 이미 주문되었습니다.

답변

1

이렇게하면 모든 데이터가 월별로 필터링되고 각 루프마다 해당 데이터로 이동하여 첫 번째 레코드를 얻을 수 있습니다.

month_wise = Log.all.group_by { |t| t.created_at.beginning_of_month } 

month_wise.each do |month| 
puts month.first.inspect 
end 
1

당신은 group_bymap으로 작업을 수행 할 수 있습니다

tops = Log.all.group_by{ |l| l.created_at.month }.map(&:first)

관련 문제