aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorChiel Wester <chiel.wester@holder.nl>2010-12-13 15:06:23 +0100
committerJosé Valim <jose.valim@gmail.com>2010-12-13 17:04:57 +0100
commit658bb4fa25db0b3f61bfb64028274f2365cad506 (patch)
treed52f85f6b691a44640172c3a870e0d39fb4a8c33 /activerecord/lib
parent32a2bf8d4e170ce68f895c007da852211892ba5e (diff)
downloadrails-658bb4fa25db0b3f61bfb64028274f2365cad506.tar.gz
rails-658bb4fa25db0b3f61bfb64028274f2365cad506.tar.bz2
rails-658bb4fa25db0b3f61bfb64028274f2365cad506.zip
Only call save on belongs_to associations if the record has changed or any nested associations have changed (resolves #3353)
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'activerecord/lib')
-rw-r--r--activerecord/lib/active_record/autosave_association.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb
index c3dda29d03..4a18719551 100644
--- a/activerecord/lib/active_record/autosave_association.rb
+++ b/activerecord/lib/active_record/autosave_association.rb
@@ -363,7 +363,7 @@ module ActiveRecord
if autosave && association.marked_for_destruction?
association.destroy
elsif autosave != false
- saved = association.save(:validate => !autosave) if association.new_record? || autosave
+ saved = association.save(:validate => !autosave) if association.new_record? || (autosave && association.changed_for_autosave?)
if association.updated?
association_id = association.send(reflection.options[:primary_key] || :id)