Sha256: 3daf9d0cdb86fe9c3d42aac206370a10b6cd7abe868a8b9f2642f6ad6c3903a9

Contents?: true

Size: 1.68 KB

Versions: 17

Compression:

Stored size: 1.68 KB

Contents

module ActiveRecord
  class Relation
    def add_cpk_support
      class << self
        include CompositePrimaryKeys::ActiveRecord::Calculations
        include CompositePrimaryKeys::ActiveRecord::FinderMethods
        include CompositePrimaryKeys::ActiveRecord::QueryMethods

        def delete(id_or_array)
          ::ActiveRecord::IdentityMap.remove_by_id(self.symbolized_base_class, id_or_array) if ::ActiveRecord::IdentityMap.enabled?
          # CPK
          # where(primary_key => id_or_array).delete_all

          id_or_array = if id_or_array.kind_of?(CompositePrimaryKeys::CompositeKeys)
            [id_or_array]
          else
            Array(id_or_array)
          end

          id_or_array.each do |id|
            where(cpk_id_predicate(table, self.primary_key, id)).delete_all
          end
        end

        def destroy(id_or_array)
          # CPK
          #if id.is_a?(Array)
          #  id.map { |one_id| destroy(one_id) }
          #else
          #  find(id).destroy
          #end
          id_or_array = if id_or_array.kind_of?(CompositePrimaryKeys::CompositeKeys)
            [id_or_array]
          else
            Array(id_or_array)
          end

          id_or_array.each do |id|
            where(cpk_id_predicate(table, self.primary_key, id)).each do |record|
              record.destroy
            end
          end
        end
      end
    end

    alias :initialize_cpk :initialize
    def initialize(klass, table)
      initialize_cpk(klass, table)
      add_cpk_support if klass.composite?
    end

    alias :initialize_copy_cpk :initialize_copy
    def initialize_copy(other)
      initialize_copy_cpk(other)
      add_cpk_support if klass.composite?
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
composite_primary_keys-5.0.4 lib/composite_primary_keys/relation.rb
composite_primary_keys-5.0.2 lib/composite_primary_keys/relation.rb
composite_primary_keys-5.0.1 lib/composite_primary_keys/relation.rb
composite_primary_keys-5.0.0 lib/composite_primary_keys/relation.rb
composite_primary_keys-5.0.0.rc1 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.1.2 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.1.1 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta9 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta8 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta7 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta6 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta5 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta4 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta3 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta2 lib/composite_primary_keys/relation.rb
composite_primary_keys-4.0.0.beta1 lib/composite_primary_keys/relation.rb