X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/b0936b87f422138579352c4f2778ecbcfe0118bf..4e976c835abebb3e53f703dbc643faefa1a16d07:/config/initializers/composite_primary_keys.rb diff --git a/config/initializers/composite_primary_keys.rb b/config/initializers/composite_primary_keys.rb index ed4d5f2c9..37200c51b 100644 --- a/config/initializers/composite_primary_keys.rb +++ b/config/initializers/composite_primary_keys.rb @@ -1,47 +1,10 @@ -# Monkey patch composite_primary_keys pending the resolution of: -# https://github.com/composite-primary-keys/composite_primary_keys/pull/170 +# Monkey patch id_was into CPK pending upstream integration +# https://github.com/composite-primary-keys/composite_primary_keys/pull/236 module ActiveRecord - module Associations - class HasManyAssociation - def delete_records(records, method) - if method == :destroy - records.each { |r| r.destroy } - update_counter(-records.length) unless inverse_updates_counter_cache? - else - if records == :all - scope = self.scope - else - # CPK - # keys = records.map { |r| r[reflection.association_primary_key] } - # scope = scope.where(reflection.association_primary_key => keys) - table = Arel::Table.new(reflection.table_name) - and_conditions = records.map do |record| - eq_conditions = Array(reflection.association_primary_key).map do |name| - table[name].eq(record[name]) - end - Arel::Nodes::And.new(eq_conditions) - end - - condition = and_conditions.shift - and_conditions.each do |and_condition| - condition = condition.or(and_condition) - end - - scope = self.scope.where(condition) - end - - if method == :delete_all - update_counter(-scope.delete_all) - else - # CPK - # update_counter(-scope.update_all(reflection.foreign_key => nil)) - updates = Array(reflection.foreign_key).inject(Hash.new) do |hash, name| - hash[name] = nil - hash - end - update_counter(-scope.update_all(updates)) - end - end + class Base + module CompositeInstanceMethods + def id_was + attribute_was("id") end end end