Sha256: ed345e7bf5c210abfb3a43b13cfa8b6e3b71505162aec889b08f320f6e785c30

Contents?: true

Size: 859 Bytes

Versions: 3

Compression:

Stored size: 859 Bytes

Contents

module ActiveRecord
  module MTI
    module QueryMethods

      def build_arel
        select_by_tableoid = select_values.delete(:tableoid) == :tableoid
        group_by_tableoid = group_values.delete(:tableoid) == :tableoid

        arel = super

        if tableoid?(@klass) || group_by_tableoid || select_by_tableoid
          arel.project(tableoid_project(@klass))
          arel.group(tableoid_group(@klass)) if group_values.any? || group_by_tableoid
        end

        arel
      end

      private

      def tableoid?(klass)
        !Thread.current['skip_tableoid_cast'] &&
        klass.using_multi_table_inheritance? &&
        klass.has_tableoid_column?
      end

      def tableoid_project(klass)
        klass.mti_type_column.as('tableoid')
      end

      def tableoid_group(klass)
        klass.mti_type_column
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_record-mti-0.3.0.pre.rc4 lib/active_record/mti/query_methods.rb
active_record-mti-0.3.0.pre.rc3 lib/active_record/mti/query_methods.rb
active_record-mti-0.3.0.pre.rc2 lib/active_record/mti/query_methods.rb