diff options
author | Darwin D Wu <wuddarwin@gmail.com> | 2018-08-15 17:18:51 -0700 |
---|---|---|
committer | Darwin D Wu <wuddarwin@gmail.com> | 2018-09-11 00:13:09 -0700 |
commit | 5291044a1d7866d2942276d812a5d3a72a67ef27 (patch) | |
tree | 3bb6f91fdec76505a2ff1104adda74dd6773dd99 /activerecord/test/cases/scoping | |
parent | 5b0b1ee8fda1cd086653992f812f96c62fb3c24b (diff) | |
download | rails-5291044a1d7866d2942276d812a5d3a72a67ef27.tar.gz rails-5291044a1d7866d2942276d812a5d3a72a67ef27.tar.bz2 rails-5291044a1d7866d2942276d812a5d3a72a67ef27.zip |
Fixes #33610
In order to avoid double assignments of nested_attributes for `has_many`
relations during record initialization, nested_attributes in `create_with`
should not be passed into `klass.new` and have them populate during
`initialize_internals_callback` with scope attributes.
However, `create_with` keys should always have precedence over where
clauses, so if there are same keys in both `create_with` and
`where_values_hash`, the value in `create_with` should be the one that's
used.
Diffstat (limited to 'activerecord/test/cases/scoping')
-rw-r--r-- | activerecord/test/cases/scoping/default_scoping_test.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/activerecord/test/cases/scoping/default_scoping_test.rb b/activerecord/test/cases/scoping/default_scoping_test.rb index e3a34aa50d..6281712df6 100644 --- a/activerecord/test/cases/scoping/default_scoping_test.rb +++ b/activerecord/test/cases/scoping/default_scoping_test.rb @@ -4,6 +4,7 @@ require "cases/helper" require "models/post" require "models/comment" require "models/developer" +require "models/project" require "models/computer" require "models/vehicle" require "models/cat" @@ -366,6 +367,21 @@ class DefaultScopingTest < ActiveRecord::TestCase assert_equal "Jamis", jamis.name end + def test_create_with_takes_precedence_over_where + developer = Developer.where(name: nil).create_with(name: "Aaron").new + assert_equal "Aaron", developer.name + end + + def test_create_with_nested_attributes + assert_difference("Project.count", 1) do + Developer.create_with( + projects_attributes: [{ name: "p1" }] + ).scoping do + Developer.create!(name: "Aaron") + end + end + end + # FIXME: I don't know if this is *desired* behavior, but it is *today's* # behavior. def test_create_with_empty_hash_will_not_reset |