Module: RailsPulse::Extensions::ActiveRecord::QueryMethods

Defined in:
lib/rails_pulse/extensions/active_record.rb

Overview

Extends ActiveRecord::Relation with database-agnostic date grouping This is a replacement for Groupdate that works regardless of ActiveRecord.default_timezone

Instance Method Summary collapse

Instance Method Details

#group_by_date(column = :period_start) ⇒ ActiveRecord::Relation

Groups records by date extracted from a timestamp column Works across PostgreSQL, MySQL, and SQLite

Examples:

Group summaries by date

RailsPulse::Summary.where(...).group_by_date(:period_start).sum(:count)
# => { Date(2024-01-01) => 100, Date(2024-01-02) => 150, ... }

Group by different column

Model.group_by_date(:created_at).count

Parameters:

  • column (Symbol, String) (defaults to: :period_start)

    the timestamp column to group by (default: :period_start)

Returns:

  • (ActiveRecord::Relation)

    relation with DATE grouping applied



22
23
24
# File 'lib/rails_pulse/extensions/active_record.rb', line 22

def group_by_date(column = :period_start)
  group(Arel.sql(date_sql(column.to_s))).extending(DateResultTransformer)
end