aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorChiel Wester <chiel.wester@holder.nl>2010-12-13 15:06:23 +0100
committerVijay Dev <vijaydev.cse@gmail.com>2010-12-16 01:49:28 +0530
commitbda16eb0920780509467bcf051d1a01639357903 (patch)
tree4c7b0a6bf5e1ea4acab575317c759471a4254e13 /activerecord/lib/active_record
parent9cfbada93a1e838f6d07e46ea5ab2c3da6e08e78 (diff)
downloadrails-bda16eb0920780509467bcf051d1a01639357903.tar.gz
rails-bda16eb0920780509467bcf051d1a01639357903.tar.bz2
rails-bda16eb0920780509467bcf051d1a01639357903.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/active_record')
-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)