我目前正在对 rails 3 + postgresql 进行悲观分析。但是似乎没有办法确认锁是否有效,除非我经历了并发测试的麻烦。没有办法通过控制台测试吗?
例子
User.transaction do
u1 = User.find(1, :lock => true)
u2 = User.find(1)
## u2 should not be able to do anything right?
end
最佳答案
打开2个控制台
控制台 1:
User.transaction do
u = User.find(1, :lock => true)
sleep(30)
end
一旦执行切换到控制台 2 然后执行此操作
控制台 2:
u = User.find(1)
u.name = "new name"
u.save!
然后您会看到控制台 2 不会提交它的更新,直到控制台 1 上的 30 秒 sleep 结束。
关于ruby-on-rails-3 - 导轨 3 : How to simply test pessimistic locking on console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21404484/