Rails ActiveRecord - 获取与锁定的belongs_to关联
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails ActiveRecord - 获取与锁定的belongs_to关联相关的知识,希望对你有一定的参考价值。
我想检索一个belongs_to关联并获取其对象的数据库锁。
> character.team.lock!
ActiveRecord::Base -- Team Load -- { :sql => "SELECT `teams`.* FROM `teams` WHERE `teams`.`id` = 1 LIMIT 1" }
ActiveRecord::Base -- Team Load -- { :sql => "SELECT `teams`.* FROM `teams` WHERE `teams`.`id` = 1 LIMIT 1 FOR UPDATE" }
上面运行两个查询,技术上有意义 - character.team
加载团队,然后team.lock!
再次选择FOR UPDATE
。
问题是 - 我怎样才能让它只发出一个查询?
答案
显然你不能,因为.lock方法总是重新加载实例(发出第二个SQL加载)。来自the docs:
.lock:获取此记录的行锁。重新加载记录以获取请求的锁定。传递SQL锁定子句以附加SELECT语句的末尾或传递“FOR UPDATE”(默认值为独占行锁)的true。返回锁定的记录。
以上是关于Rails ActiveRecord - 获取与锁定的belongs_to关联的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试在 rails 2.3.11 的视图中获取 activeRecord 对象的参数时出现错误
检索ActiveRecord / Rails中没有关系的对象
获取Rails Activerecord以使用数据库的外部API ID