我有一个带有嵌入式评论的列表文档。除了用户在视图中的评论,我还想显示他们的屏幕名称和个人资料图片。个人资料图片可以更改,屏幕名称也可以更改。
我试图确定这里的最佳设计实践是什么。为了最好地利用 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 的优势。