我可以在不重新加载的情况下锁定ActiveRecord对象吗?
user = User.find(1)
=> #<User id: 1, name: "Ed" ...>
user.name = "Joe"
=> "Joe"
user.lock!
=> #<User id: 1, name: "Ed" ...>
我可以发送原始SQL“SELECT ... FOR UPDATE”,但它看起来不太干净。
答案 0 :(得分:0)
我最后向ActiveRecord::Base
添加了一个方法:
ActiveRecord::Base.class_eval do
def lock_without_reload!
self.class.lock(true).find(id)
true
end
end