Merge pull request #30956 from CJStadler/with-lock-changed-deprecation
Fix deprecation warnings from with_lock
This commit is contained in:
parent
fe37da4ebf
commit
3c1a8ee7d7
@ -62,7 +62,7 @@ module Pessimistic
|
||||
# the locked record.
|
||||
def lock!(lock = true)
|
||||
if persisted?
|
||||
if changed?
|
||||
if has_changes_to_save?
|
||||
raise(<<-MSG.squish)
|
||||
Locking a record with unpersisted changes is not supported. Use
|
||||
`save` to persist the changes, or `reload` to discard them
|
||||
|
@ -15,6 +15,7 @@
|
||||
require "models/engine"
|
||||
require "models/wheel"
|
||||
require "models/treasure"
|
||||
require "models/frog"
|
||||
|
||||
class LockWithoutDefault < ActiveRecord::Base; end
|
||||
|
||||
@ -653,6 +654,16 @@ def test_lock_raises_when_the_record_is_dirty
|
||||
end
|
||||
end
|
||||
|
||||
def test_locking_in_after_save_callback
|
||||
assert_nothing_raised do
|
||||
frog = ::Frog.create(name: "Old Frog")
|
||||
frog.name = "New Frog"
|
||||
assert_not_deprecated do
|
||||
frog.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_with_lock_commits_transaction
|
||||
person = Person.find 1
|
||||
person.with_lock do
|
||||
|
8
activerecord/test/models/frog.rb
Normal file
8
activerecord/test/models/frog.rb
Normal file
@ -0,0 +1,8 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Frog < ActiveRecord::Base
|
||||
after_save do
|
||||
with_lock do
|
||||
end
|
||||
end
|
||||
end
|
@ -347,6 +347,10 @@
|
||||
t.string :token
|
||||
end
|
||||
|
||||
create_table :frogs, force: true do |t|
|
||||
t.string :name
|
||||
end
|
||||
|
||||
create_table :funny_jokes, force: true do |t|
|
||||
t.string :name
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user