2016-02-22 85 views
1

有沒有辦法將關聯的belongs_to記錄與現有記錄進行比較,而不是打到數據庫?例如,我有一個用戶,並且想要查看某個帳戶是否屬於該用戶。簡單的方法是account.user == user,但是從數據庫加載帳戶的用戶,然後將它比較user。數據庫調用是:ActiveRecord:比較沒有數據庫調用的belongs_to關聯

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

我不認爲這是可能的,因爲Rails關係在默認情況下被延遲加載;數據庫中的帳戶錶行只包含user_id列以及所有關於用戶的信息,但每當需要調用account.user時,都會進行單獨的數據庫查詢,以獲得其他User列,而不是id,以便與不同的User對象進行比較。

+1

無賴。如果'account.user'提供了一個可以與另一個用戶對象進行比較而不碰到數據庫的關係,那會更好。 –

相關問題