Skip to content
  • Carlos Antonio da Silva's avatar
    a3c3cfdd
    Unscope update_column(s) query to ignore default scope · a3c3cfdd
    Carlos Antonio da Silva authored
    When applying default_scope to a class with a where clause, using
    update_column(s) could generate a query that would not properly update
    the record due to the where clause from the default_scope being applied
    to the update query.
    
        class User < ActiveRecord::Base
          default_scope where(active: true)
        end
    
        user = User.first
        user.active = false
        user.save!
    
        user.update_column(:active, true) # => false
    
    In this situation we want to skip the default_scope clause and just
    update the record based on the primary key. With this change:
    
        user.update_column(:active, true) # => true
    
    Backport of #8436 fix.
    
    Conflicts:
    	activerecord/CHANGELOG.md
    	activerecord/lib/active_record/persistence.rb
    	activerecord/test/cases/persistence_test.rb
    a3c3cfdd
    Unscope update_column(s) query to ignore default scope
    Carlos Antonio da Silva authored
    When applying default_scope to a class with a where clause, using
    update_column(s) could generate a query that would not properly update
    the record due to the where clause from the default_scope being applied
    to the update query.
    
        class User < ActiveRecord::Base
          default_scope where(active: true)
        end
    
        user = User.first
        user.active = false
        user.save!
    
        user.update_column(:active, true) # => false
    
    In this situation we want to skip the default_scope clause and just
    update the record based on the primary key. With this change:
    
        user.update_column(:active, true) # => true
    
    Backport of #8436 fix.
    
    Conflicts:
    	activerecord/CHANGELOG.md
    	activerecord/lib/active_record/persistence.rb
    	activerecord/test/cases/persistence_test.rb
Loading