标签: mysql ruby-on-rails activerecord transactions
下面是我们使用rails 3.1.6在mysql 5.5上执行的代码
Model.transaction do model.events.destroy_all 2.times { model.events.create!(some_body) } end
期望在模型下始终有两个且只有两个事件对象。
当我在两个线程上运行此代码时,我经常会得到四个事件对象。我希望两个线程都能序列化事务块中的代码执行。显然交易不起作用。
是否有共同的模式来做这种事情?
答案 0 :(得分:2)
在删除和创建活动之前,您必须使用pessimistic locking来锁定模型。