Sha256: 8f5ff6301b45eea9de9f3e27d0de489a7554bd4d793030a96000f25d6ea9aedc

Contents?: true

Size: 1.53 KB

Versions: 10

Compression:

Stored size: 1.53 KB

Contents

module Torque
  module PostgreSQL
    module Relation
      module Merger

        def merge # :nodoc:
          super

          merge_dynamic_selection
          merge_distinct_on
          merge_auxiliary_statements
          merge_inheritance

          relation
        end

        private

          # Merge dynamic selection columns
          def merge_dynamic_selection
            relation.send(:dynamic_selection).concat(other.send(:dynamic_selection))
          end

          # Merge distinct on columns
          def merge_distinct_on
            return if other.distinct_on_values.blank?
            relation.distinct_on_values += other.distinct_on_values
          end

          # Merge auxiliary statements activated by +with+
          def merge_auxiliary_statements
            return if other.auxiliary_statements_values.blank?

            current = relation.auxiliary_statements_values.map{ |cte| cte.class }
            other.auxiliary_statements_values.each do |other|
              next if current.include?(other.class)
              relation.auxiliary_statements_values += [other]
              current << other.class
            end
          end

          # Merge settings related to inheritance tables
          def merge_inheritance
            relation.itself_only_value = true if other.itself_only_value
            relation.cast_records_value.concat(other.cast_records_value).uniq! \
              if other.cast_records_value.present?
          end

      end

      ActiveRecord::Relation::Merger.prepend Merger
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
torque-postgresql-0.2.16 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.15 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.14 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.13 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.12 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.11 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.10 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.9 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.8 lib/torque/postgresql/relation/merger.rb
torque-postgresql-0.2.7 lib/torque/postgresql/relation/merger.rb