Module: ActiveRecordDistinctOn::DistinctOnQueryMethods
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_record_distinct_on/distinct_on_query_methods.rb
Constant Summary collapse
- FROZEN_EMPTY_ARRAY =
[].freeze
Instance Method Summary collapse
- #distinct_on(*fields) ⇒ Object
- #distinct_on!(*fields) ⇒ Object
- #distinct_on_values ⇒ Object
- #distinct_on_values=(values) ⇒ Object
Instance Method Details
#distinct_on(*fields) ⇒ Object
24 25 26 27 |
# File 'lib/active_record_distinct_on/distinct_on_query_methods.rb', line 24 def distinct_on(*fields) raise ArgumentError, 'Call this with at least one field' if fields.empty? spawn.distinct_on!(*fields) end |
#distinct_on!(*fields) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/active_record_distinct_on/distinct_on_query_methods.rb', line 29 def distinct_on!(*fields) fields.flatten! fields.map! { |field| if klass.attribute_alias?(field) arel_table[klass.attribute_alias(field).to_sym] else arel_table[field] end } self.distinct_on_values += fields self end |
#distinct_on_values ⇒ Object
16 17 18 |
# File 'lib/active_record_distinct_on/distinct_on_query_methods.rb', line 16 def distinct_on_values @values[:distinct_on] || FROZEN_EMPTY_ARRAY end |
#distinct_on_values=(values) ⇒ Object
20 21 22 |
# File 'lib/active_record_distinct_on/distinct_on_query_methods.rb', line 20 def distinct_on_values=(values) @values[:distinct_on] = values end |