diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-14 20:46:51 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-15 12:06:45 +0900 |
commit | cdb8697b4a654aad2e65590d58c5f581a53d6b33 (patch) | |
tree | 8ac091bcf825ff2bc8dbdca92a0e612fb930a847 /activerecord/lib/active_record | |
parent | 79b8b626216b4f8f24b5606f3edd43d5b14cd2a6 (diff) | |
download | rails-cdb8697b4a654aad2e65590d58c5f581a53d6b33.tar.gz rails-cdb8697b4a654aad2e65590d58c5f581a53d6b33.tar.bz2 rails-cdb8697b4a654aad2e65590d58c5f581a53d6b33.zip |
Revert "Merge pull request #35186 from kamipo/fix_leaking_scope_on_relation_create"
This reverts commit b67d5c6dedbf033515a96a95d24d085bf99a0d07, reversing
changes made to 2e018361c7c51e36d1d98bf770b7456d78dee68b.
Reason: #35186 may cause that silently leaking information when people
upgrade the app.
We need deprecation first before making this.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 13 | ||||
-rw-r--r-- | activerecord/lib/active_record/scoping.rb | 8 |
2 files changed, 2 insertions, 19 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index f98d9bb2c0..ecca833847 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -67,7 +67,6 @@ module ActiveRecord # user = users.new { |user| user.name = 'Oscar' } # user.name # => Oscar def new(attributes = nil, &block) - block = klass.current_scope_restoring_block(&block) scoping { klass.new(attributes, &block) } end @@ -93,11 +92,7 @@ module ActiveRecord # users.create(name: nil) # validation on name # # => #<User id: nil, name: nil, ...> def create(attributes = nil, &block) - if attributes.is_a?(Array) - attributes.collect { |attr| create(attr, &block) } - else - new(attributes, &block).tap(&:save) - end + scoping { klass.create(attributes, &block) } end # Similar to #create, but calls @@ -107,11 +102,7 @@ module ActiveRecord # Expects arguments in the same format as # {ActiveRecord::Base.create!}[rdoc-ref:Persistence::ClassMethods#create!]. def create!(attributes = nil, &block) - if attributes.is_a?(Array) - attributes.collect { |attr| create!(attr, &block) } - else - new(attributes, &block).tap(&:save!) - end + scoping { klass.create!(attributes, &block) } end def first_or_create(attributes = nil, &block) # :nodoc: diff --git a/activerecord/lib/active_record/scoping.rb b/activerecord/lib/active_record/scoping.rb index 1142a87d25..35e9dcbffc 100644 --- a/activerecord/lib/active_record/scoping.rb +++ b/activerecord/lib/active_record/scoping.rb @@ -30,14 +30,6 @@ module ActiveRecord def current_scope=(scope) ScopeRegistry.set_value_for(:current_scope, self, scope) end - - def current_scope_restoring_block(&block) - current_scope = self.current_scope(true) - -> *args do - self.current_scope = current_scope - yield(*args) if block_given? - end - end end def populate_with_current_scope_attributes # :nodoc: |