- class AssociationScope
- def add_constraints(scope)
- tables = construct_tables
-
- chain.each_with_index do |reflection, i|
- table, foreign_table = tables.shift, tables.first
-
- if reflection.source_macro == :has_and_belongs_to_many
- join_table = tables.shift
-
- # CPK
- # scope = scope.joins(join(
- # join_table,
- # table[reflection.active_record_primary_key].
- # eq(join_table[reflection.association_foreign_key])
- #))
- predicate = cpk_join_predicate(table, reflection.association_primary_key,
- join_table, reflection.association_foreign_key)
- scope = scope.joins(join(join_table, predicate))
-
- table, foreign_table = join_table, tables.first
- end
-
- if reflection.source_macro == :belongs_to
- if reflection.options[:polymorphic]
- key = reflection.association_primary_key(klass)
- else
- key = reflection.association_primary_key
- end
-
- foreign_key = reflection.foreign_key
+ 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