ActiveRecord:比较没有数据库调用的belongs_to关联

时间:2016-02-22 18:00:23

标签: ruby-on-rails activerecord

有没有办法将关联的belongs_to记录与现有记录进行比较,而不是点击数据库?例如,我有一个用户,想要查看帐户是否属于用户。简单的方法是account.user == user,但是会从数据库中加载帐户的用户,然后将其与user进行比较。数据库调用是:

SELECT  `users`.* FROM `users`  WHERE `users`.`id` = 1 LIMIT 1

或者,尽管它没有记录,但看起来我可以做user.accounts.include?(account),但是这会调用:

SELECT  1 AS one FROM `accounts`  WHERE `accounts `.`user_id` = 1 AND `accounts`.`id` = 1 LIMIT 1

当然,我可以做account.user_id == user.id,但这感觉不是很“困难”。

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为默认情况下Rails关系是延迟加载的;数据库中的accounts表行只包含user_id列以及它对用户的所有知识,但只要您需要调用account.user,就会获得一个单独的数据库查询以获取其他Userid列更多的列与不同的User对象进行比较。