在Sinatra和Mongoid的评论模型中存储用户

时间:2014-06-03 21:35:12

标签: ruby sinatra mongoid

关于如何解决此问题的文档很少。我有一个评论模型,其中包含一个字段,用于存储创建评论的用户以及评论所针对的用户。

我认为有两种方法可以做到这一点:

class Comment
      include Mongoid::Document

      field :from, type: Moped::BSON::ObjectId    # The user who created the comment
      field :to, type: Moped::BSON::ObjectId      # The user the comment is directed at
      field :details, type: String

-OR -

class Comment
      field Mongoid::Document

      belongs_to :user    # The user who created the comment

      field :to, type: Moped::BSON::ObjectId      # The user the comment is directed at
      field :details, type: String

以某种方式做到这一点是否有任何好处?或者这两个是一样的吗?或者,还有更好的方法?使用Mongoid和Sinatra。

1 个答案:

答案 0 :(得分:0)

你工作的第一种方式很好,但如果你这样做并想要用户信息,你需要添加帮助方法来使用id来拉动用户。

第二种方式是那里,但我会这样做:

belongs_to :from_user, class_name: 'User'
belongs_to :to_user, class_name: 'User'

通过这种方式,您可以comment.from_usercomment.to_user获取实际用户。 id仍然没有明确地被调出,而是从属于。

生成

所有这一切,因为这是mongo和文档数据库,如果您需要评论所需的用户的特定信息,我可能倾向于在评论中嵌入您需要的信息,这样您就不会# 39;不得不做一个关系。