2012-01-21 7 views
1

私はユーザーのすべてのアクティビティを埋め込みました。ほとんどのユーザーには、数万のアクティビティが関連付けられています。コントローラコードのcurrent_userをチェックすると、Mongoidはすべての埋め込みアクティビティレコードを含むユーザオブジェクト全体をロードしますか?私の腸の感覚は私には言いますが、私は本当にそれを確認したいので、私は夜によく眠ることができます。 :) ありがとうございました!deviseのcurrent_user変数を使用すると、Mongoidはユーザーオブジェクト全体をロードしますか?

以下は、Userクラスの短いバージョンです。

class User 
    include Mongoid::Document 
    embeds_many :activities 
end 

EDIT

は、私はCURRENT_USERを使用するときにオブジェクト全体がロードされているかどうかを確認するために特に興味なぜ私は明確にしましょう。アクティビティはユーザドキュメントに埋め込まれており、ほとんどのユーザには何千ものレコードがあるので、ユーザがサインインしているかどうかをチェックするだけで、負荷がすべて高価になります。

答えて

1

はい。あなたがcurrent_user.activitiesに電話した場合、Mongoidはactivitiesにアクセスします。

+0

しかし、ビューでは、ユーザーがサインインされているかどうかをチェックして、ユーザーがサインインされているかどうかに応じて異なるモジュールを表示することができます。たくさんのデータが埋め込まれていると、チェックが非常に高価になると思われます。アクティビティを埋め込むのではなくリンクする必要がありますか? – Bryan

+0

問題はほとんどあなたが間違っていない間、それを修正することは、猿がそれを回避するためにDeviseの複数の領域にパッチを当てることを意味するでしょう。あなたはMongoidのデフォルトスコープオプションを見て、デフォルトで 'activities'を除外することを見ることができます。これはDeviseのいくつかの領域にパッチを当てることなく、あなたが望むものを得ることを意味します。また、 'database_authenticable'モジュールを掘り下げて、猿パッチのポイントを見つけることもできます。 –

関連する問題