2012-01-21 51 views
1

我已經爲用戶嵌入了所有活動,並且讓我們說大多數用戶擁有數以萬計的活動與他們相關聯。在我的控制器代碼中檢查current_user時,Mongoid加載包含所有嵌入式活動記錄的整個用戶對象嗎?我的直覺告訴我不,但我真的想確認,所以我可以在晚上睡得更好。 :) 謝謝!當使用devise current_user變量時,Mongoid是否加載整個用戶對象?

下面是User類的簡短版本。

class User 
    include Mongoid::Document 
    embeds_many :activities 
end 

編輯

讓我澄清一下爲什麼我要看看整個對象使用CURRENT_USER加載時,特別感興趣。由於這些活動都嵌入在用戶文檔中,並且大多數用戶擁有數千條記錄,所以如果我只想檢查用戶是否登錄,則每個完整負載都將很昂貴。

回答

1

是。在驗證時設計請求整個模型,所以如果您致電current_user.activities,Mongoid將爲您提供訪問activities的權限。

+0

但在視圖中,有時我只想檢查用戶是否已登錄,以便根據用戶是否登錄顯示不同的模塊。似乎如果嵌入大量數據,檢查是非常昂貴的。我應該鏈接活動而不是嵌入它們嗎? – Bryan

+0

問題主要是,雖然你沒有錯,修復它將意味着猴子修補設計的多個領域來解決它。你可以看看Mongoid中的默認範圍選項,並且默認排除'activities',這意味着在沒有Monkey修補Devise中的幾個區域的情況下獲得你想要的。或者,您可以通過'database_authenticable'模塊來查找猴子補丁點。 –

相關問題