aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2015-04-18 10:44:26 -0400
committerSean Griffin <sean@thoughtbot.com>2015-04-18 10:47:04 -0400
commitd849f42b4ecf687ed5350f5a2402fb795aa33aac (patch)
tree1b65d8e0df921dc78693120c80d609d53c4fc100 /activerecord/lib/active_record
parent228559eab8e50dd52e1f07841a288ed39c84ff4e (diff)
downloadrails-d849f42b4ecf687ed5350f5a2402fb795aa33aac.tar.gz
rails-d849f42b4ecf687ed5350f5a2402fb795aa33aac.tar.bz2
rails-d849f42b4ecf687ed5350f5a2402fb795aa33aac.zip
Autosave existing records on HMT associations when the parent is new
To me it seems like this should only be the case if `autosave: true` is set on the association. However, when implemented that way, it caused issues with has many associations, where we have explicit tests stating that child records are updated when the parent is new, even if autosave is not set (presumably to update the parent id, but other changed attributes would be persisted as well). It's quirky, but at least we should be consistently quirky. This constitutes a minor but subtle change in behavior, and therefore should not be backported to 4.2 and earlier. Fixes #19782
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations/has_many_through_association.rb10
1 files changed, 4 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb
index 29e8a0edc1..cd79266952 100644
--- a/activerecord/lib/active_record/associations/has_many_through_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -38,12 +38,10 @@ module ActiveRecord
def insert_record(record, validate = true, raise = false)
ensure_not_nested
- if record.new_record?
- if raise
- record.save!(:validate => validate)
- else
- return unless record.save(:validate => validate)
- end
+ if raise
+ record.save!(:validate => validate)
+ else
+ return unless record.save(:validate => validate)
end
save_through_record(record)