非常基本的问题:
我有一个模型x has_many y,模型y belongs_to x。
如果我使用id x_id锁定模型x的实例,它是否还锁定了表格中关联的行,其中模型y的值在连接列下具有值x_id?
或者ror锁定只是锁定活动记录而不关心它的关联吗?
谢谢!
答案 0 :(得分:1)
据我所知,它不会锁定任何关联。它只是锁定行,而不关心模型关联。
答案 1 :(得分:0)
似乎有two locking strategies in rails,乐观(实际上没有锁定行但ActiveRecord引发ActiveRecord :: StaleObjectError以对同一行进行多次更新[第一次更新除外,这将成功]),和悲观(将FOR UPDATE
附加到select语句并实际锁定行(假设您的数据库支持锁定)。ActiveRecord Locking documentation I read through中没有任何一个意味着存在导致/允许关联记录被锁定的任何魔法
由于您可以传递自己的锁定子句,因此我建议您阅读特定数据库如何处理rails用于悲观锁定(select ... for update
)和您可以传递的其他子句的子句(使用{{3 }})。