module ActiveRecord::MTI::QueryMethods

Public Instance Methods

build_arel() click to toggle source
Calls superclass method
# File lib/active_record/mti/query_methods.rb, line 5
def build_arel
  @select_by_tableoid = [select_values.delete(:tableoid), tableoid?(klass)].compact.first
  @group_by_tableoid = group_values.delete(:tableoid)

  super.tap do |arel|
    if @group_by_tableoid || (@select_by_tableoid && group_values.any?)
      arel.group(tableoid_group(@klass))
    end
  end
end
build_select(*args) click to toggle source
Calls superclass method
# File lib/active_record/mti/query_methods.rb, line 16
def build_select(*args)
  super.tap do |arel|
    arel.project(tableoid_project(@klass)) if (@group_by_tableoid || @select_by_tableoid)
  end
end

Private Instance Methods

tableoid?(klass) click to toggle source
# File lib/active_record/mti/query_methods.rb, line 24
def tableoid?(klass)
  !Thread.current['skip_tableoid_cast'] &&
  klass.using_multi_table_inheritance? &&
  klass.mti_type_column
end
tableoid_group(klass) click to toggle source
# File lib/active_record/mti/query_methods.rb, line 34
def tableoid_group(klass)
  klass.mti_type_column
end
tableoid_project(klass) click to toggle source
# File lib/active_record/mti/query_methods.rb, line 30
def tableoid_project(klass)
  klass.mti_type_column.as('tableoid')
end