Module: ActiveRecord::DistinctOn

Defined in:
lib/active_record/query_methods.rb

Overview

Prepended onto ActiveRecord::QueryMethods rather than reopening it, so these methods don't appear in QueryMethods.public_instance_methods(false) -- which Rails' QueryingMethodsDelegationTest asserts against -- while relations still respond to them.

Instance Method Summary collapse

Instance Method Details

#distinct_on(*fields) ⇒ Object Also known as: uniq_on



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

def distinct_on(*fields)
  spawn.distinct_on!(*fields)
end

#distinct_on!(*fields) ⇒ Object Also known as: uniq_on!



27
28
29
30
31
# File 'lib/active_record/query_methods.rb', line 27

def distinct_on!(*fields)
  fields.flatten!
  self.distinct_on_values = fields.map { |x| x.is_a?(Arel::Attributes::Attribute) ? x : klass.arel_table[x] }
  self
end

#distinct_on_valuesObject



14
15
16
# File 'lib/active_record/query_methods.rb', line 14

def distinct_on_values
  @values["distinct_on_values"] || []
end

#distinct_on_values=(value) ⇒ Object



18
19
20
# File 'lib/active_record/query_methods.rb', line 18

def distinct_on_values=(value)
  @values["distinct_on_values"] = value
end