aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/base_test.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-02-07 17:44:23 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-02-07 21:04:01 +0900
commit22360534ac922c68fb0a28f584b48bc0f3633221 (patch)
tree634c8632646c2a4aa2560df46fad9f0a3e184ffb /activerecord/test/cases/base_test.rb
parent2e018361c7c51e36d1d98bf770b7456d78dee68b (diff)
downloadrails-22360534ac922c68fb0a28f584b48bc0f3633221.tar.gz
rails-22360534ac922c68fb0a28f584b48bc0f3633221.tar.bz2
rails-22360534ac922c68fb0a28f584b48bc0f3633221.zip
Fix `relation.create` to avoid leaking scope to initialization block and callbacks
`relation.create` populates scope attributes to new record by `scoping`, it is necessary to assign the scope attributes to the record and to find STI subclass from the scope attributes. But the effect of `scoping` is class global, it was caused undesired behavior that pollute all class level querying methods in initialization block and callbacks (`after_initialize`, `before_validation`, `before_save`, etc), which are user provided code. To avoid the leaking scope issue, restore the original current scope before initialization block and callbacks are invoked. Fixes #9894. Fixes #17577. Closes #31526.
Diffstat (limited to 'activerecord/test/cases/base_test.rb')
-rw-r--r--activerecord/test/cases/base_test.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index 4938b6865f..363593ca19 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1535,7 +1535,7 @@ class BasicsTest < ActiveRecord::TestCase
Bird.create!(name: "Bluejay")
ActiveRecord::Base.connection.while_preventing_writes do
- assert_queries(2) { Bird.where(name: "Bluejay").explain }
+ assert_nothing_raised { Bird.where(name: "Bluejay").explain }
end
end