Rails ActiveRecord:无需重新加载锁定

时间:2016-07-05 20:08:53

标签: ruby-on-rails locking rails-activerecord

我可以在不重新加载的情况下锁定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”,但它看起来不太干净。

1 个答案:

答案 0 :(得分:0)

我最后向ActiveRecord::Base添加了一个方法:

ActiveRecord::Base.class_eval do
  def lock_without_reload!
    self.class.lock(true).find(id)
    true
  end
end