복붙노트

[RUBY-ON-RAILS] 주 / 월 / 등 및 액티브에 의해 그룹화?

RUBY-ON-RAILS

주 / 월 / 등 및 액티브에 의해 그룹화?

내 제품에 약간의 정적 계산을하고 있어요. 사용자는 작업의 번호를 수행의 게시 의견을 말 할 수있다. 나는 그들이 지난 한 달 동안 일주일에 게시하거나 지난 1 년간 한 달에 얼마나 많은 댓글을 보여줄 수 있어야합니다.

그룹 액티브 어떤 방법이 방법이 있나요? 가장 최선은 단순히 수동으로 수행하는 것입니다 - 반복 기록을 통해 내 자신의 기준에 따라 합산?

class User < ActiveRecord::Base
  has_many :comments
end

class Comments < ActiveRecord::Base
  belongs_to :user
end

@user.comments(:all).map {|c| ...do my calculations here...}

또는 더 좋은 방법은 무엇입니까?

감사합니다! 귀

해결법

  1. ==============================

    1.포스트 그레스에서 당신은 할 수 있습니다 :

    포스트 그레스에서 당신은 할 수 있습니다 :

    @user.comments.group("DATE_TRUNC('month', created_at)").count
    

    얻을 수 있습니다 :

    {"2012-08-01 00:00:00"=>152, "2012-07-01 00:00:00"=>57, "2012-09-01 00:00:00"=>132}
    

    그것은 그룹화 "천년"에서 "마이크로"의 값을 허용합니다 http://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC

  2. ==============================

    2.이 경우, 나를 위해 가장 좋은 방법은 바로 SQL에서 그것을 할, 그렇지 루비 GROUP_BY 기능을 사용하는 것이 었습니다 :

    이 경우, 나를 위해 가장 좋은 방법은 바로 SQL에서 그것을 할, 그렇지 루비 GROUP_BY 기능을 사용하는 것이 었습니다 :

    @user.all.group_by{ |u| u.created_at.beginning_of_month }
    
  3. ==============================

    3.다음은이의 더 세련된 버전입니다

    다음은이의 더 세련된 버전입니다

    @user.comments.group("year(created_at)").group("month(created_at)").count
    
  4. ==============================

    4.내 생각 같은 것입니다 :

    내 생각 같은 것입니다 :

    @user.comments.count(:group => "year(created_at),month(created_at)")
    

    드라이 코드, YMMV

  5. ==============================

    5.사용 GROUP_BY

    사용 GROUP_BY

    @user.comments.group_by(&:week)
    
    class User < ActiveRecord::Base
      def week
        some_attribute_like_date.strftime('%Y-%W')
      end
    end
    

    이렇게하면 YYYY-WW의 형식으로 그룹화 된 목록을 제공합니다

  6. ==============================

    6.has_activity 플러그인을 확인하세요.

    has_activity 플러그인을 확인하세요.

  7. ==============================

    7.그룹 날짜 보석을 확인

    그룹 날짜 보석을 확인

    https://github.com/ankane/groupdate

    그것은 최근의 커밋을 가지고 PostgreSQL을 함께 작동하여 통합을 빠르고 쉽게 차트에 대한 차트 킥, 그리고 시간대와 함께 작동!

  8. from https://stackoverflow.com/questions/902974/grouping-by-week-month-etc-activerecord by cc-by-sa and MIT license