有没有办法将关联的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
,但这感觉不是很“困难”。
答案 0 :(得分:0)
我认为这是不可能的,因为默认情况下Rails关系是延迟加载的;数据库中的accounts表行只包含user_id
列以及它对用户的所有知识,但只要您需要调用account.user
,就会获得一个单独的数据库查询以获取其他User
比id
列更多的列与不同的User
对象进行比较。