diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-12-14 19:20:19 +0000 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-12-14 19:20:19 +0000 |
commit | 889e8bee82ea4f75adb6de5badad512d2c615b7f (patch) | |
tree | 8e97f5f816b548e8170bf5e39d2533ccf186f8da /activerecord/lib/active_record/associations/builder | |
parent | 8a37970312815b6ea0b27821f52552df19add8cb (diff) | |
download | rails-889e8bee82ea4f75adb6de5badad512d2c615b7f.tar.gz rails-889e8bee82ea4f75adb6de5badad512d2c615b7f.tar.bz2 rails-889e8bee82ea4f75adb6de5badad512d2c615b7f.zip |
Fix #3672 again (dependent: delete_all perf)
Diffstat (limited to 'activerecord/lib/active_record/associations/builder')
-rw-r--r-- | activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/builder/has_many.rb | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb b/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb index 30fc44b4c2..0b634ab944 100644 --- a/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb +++ b/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb @@ -18,7 +18,7 @@ module ActiveRecord::Associations::Builder model.send(:include, Module.new { class_eval <<-RUBY, __FILE__, __LINE__ + 1 def destroy_associations - association(#{name.to_sym.inspect}).delete_all + association(#{name.to_sym.inspect}).delete_all_on_destroy super end RUBY diff --git a/activerecord/lib/active_record/associations/builder/has_many.rb b/activerecord/lib/active_record/associations/builder/has_many.rb index d29a525b9e..9c24f40690 100644 --- a/activerecord/lib/active_record/associations/builder/has_many.rb +++ b/activerecord/lib/active_record/associations/builder/has_many.rb @@ -46,10 +46,16 @@ module ActiveRecord::Associations::Builder def define_delete_all_dependency_method name = self.name mixin.redefine_method(dependency_method_name) do + association(name).delete_all_on_destroy + end + end + + def define_nullify_dependency_method + name = self.name + mixin.redefine_method(dependency_method_name) do send(name).delete_all end end - alias :define_nullify_dependency_method :define_delete_all_dependency_method def define_restrict_dependency_method name = self.name |