Class: ParticipantMetrics::WeeklyCount
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- ParticipantMetrics::WeeklyCount
- Defined in:
- app/models/participant_metrics/weekly_count.rb
Overview
Calculate weekly (by enrollment week) of records.
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.fetch(group_id) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/models/participant_metrics/weekly_count.rb', line 11 def self.fetch(group_id) pg_timezone = ActiveSupport::TimeZone[Time.zone.name].tzinfo.name joins(memberships: :participant) .select(<<-SQL ( FLOOR ( EXTRACT ( EPOCH FROM ( ( #{connection.quote_table_name(table_name)}.created_at AT TIME ZONE 'UTC' ) AT TIME ZONE #{connection.quote(pg_timezone)} - memberships.start_date ) ) / 604800 ) + 1 )::int AS week, memberships.participant_id, COUNT(1) SQL ) .merge(Participant.not_moderator) .merge(Membership.where(group_id: group_id)) .group("week, memberships.participant_id") end |
Instance Method Details
#count ⇒ Object
36 37 38 |
# File 'app/models/participant_metrics/weekly_count.rb', line 36 def count attributes["count"] end |
#participant_id ⇒ Object
32 33 34 |
# File 'app/models/participant_metrics/weekly_count.rb', line 32 def participant_id attributes["participant_id"] end |
#week ⇒ Object
28 29 30 |
# File 'app/models/participant_metrics/weekly_count.rb', line 28 def week attributes["week"] end |