【问题标题】:MongoMapper two one-to-many relationships on one modelMongoMapper 一个模型上的两个一对多关系
【发布时间】:2013-06-06 03:59:14
【问题描述】:

我正在尝试对类似于 StackOverflow 的问答系统进行建模,因为有一个问题,它有答案,并且问题和答案都属于不同的用户(但答案也属于问题)我的代码如下:

class User
    include MongoMapper::Document

    many :questions

    timestamps!
end

class Question
    include MongoMapper::Document

    belongs_to :user

    many :answers
    many :comments

    timestamps!
end

class Answer
    include MongoMapper::Document

    belongs_to :question

    many :comments

    timestamps!
end

我有几个问题:

  1. 如何让两个事物与一个模型有关系?一个问题可以有多个答案,一个用户可以有多个答案。
  2. 如果我使用question.answers.create() 创建答案,我如何将用户与其关联?我可以手动设置user_id 或类似的东西吗?

【问题讨论】:

    标签: ruby activerecord sinatra mongomapper


    【解决方案1】:

    我自己想通了——我不太明白是什么让我相信我不能只拥有多重关系。我是多么封闭!

    对于其他陷入困境的人:

    class User
        include MongoMapper::Document
    
        many :questions
        many :answers
    
        timestamps!
    end
    
    class Question
        include MongoMapper::Document
    
        belongs_to :user
    
        many :answers
        many :comments
    
        timestamps!
    end
    
    class Answer
        include MongoMapper::Document
    
        belongs_to :question
        belongs_to :user
    
        many :comments
    
        timestamps!
    end
    

    像这样创建新的“答案”:

    q = Question.find(id)
    u = User.find(id)
    a = q.answers.create(
        :user_id => u._id
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多