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 对象的参数时出现错误

Rails 中的表关联 - ActiveRecord

检索ActiveRecord / Rails中没有关系的对象

获取Rails Activerecord以使用数据库的外部API ID

如何在 Ruby on Rails 中查看给定 ActiveRecord 查询将生成的 SQL

获取Rails模型中关联列的总和