質問: Mongoid埋め込み可能なコメントと変更可能なユーザー情報 私は埋め込まれたコメントを持つリスト文書を持っています。ビューのユーザーのコメントに加えて、そのスクリーン名とプロフィール画像を表示したいと思います。プロフィール画像が変わる可能性があり、画面名も変わる可能性があります。 私は設計のためのベストプラクティスが何であるかを判断しようとしています。 Mongoを最大限に活用するには、埋め込みコメントが次のように表示されるように見えます。 コメントモデル ``` class Comment include Mongoid::Document field :user_id field :username field :profile_pic_url field :content field :created_at, type: Date embedded_in :list, :inverse_of => :comments end ``` ただし、コメントのすべてのインスタンスを更新するようなUserモデルにafter_saveフィルタがないかぎり、コメントデータ(ユーザーのスクリーン名とプロファイルピクチャ)は失効します。 適切な設計に関するガイダンスは?コメントは埋め込まれていないようにして、ユーザーにはコメントが多く、コメントには多くのコメントが付くようにすることができますが、私はMongoの強みに挑戦しています。
回答: 私は各コメントに各フィールドを入れるのではなく、ユーザーを参照します。 ``` class User include Mongoid::Document include Mongoid::Timestamps field :user_id field :username field :profile_pic_url has_many :comments end class Comment include Mongoid::Document include Mongoid::Timestamps field :content belongs_to :user embedded_in :list, :inverse_of => :comments end ``` You can find documentation for the has_many relation at また、タイムスタンプを余分に使用し、created_atフィールドを削除しました。これは http ://mongoid.org/en/mongoid/docs/extras.html#timestamps