2011-02-17 52 views
0

我有一個問題,我試圖從評論模型中兩次引用一個稱爲用戶的模型。Mongoid社團

第一個實例是,因爲用戶可以有很多的意見(如收件人)

但其他協會是一個註解的作者之一。那是

references_one :user, :inverse_of :author 

那麼我會需要另一個關聯用戶的註釋由該用戶,而不是該用戶。

embedded_in :user, :inverse_of => :commentsout 

我希望它有點道理。

也許這樣的事情更有意義(僞代碼)

user: 
    has_many: comments => author 
    can_be: author, recipient 

comment: 
    belongs_to_many: users => recipients 
    has_one: user => author 
+0

我想要實現的就像http://railscasts.com/episodes/238-mongoid,但在我的實例中,我有一個用戶模型,而一個作者模型,在它的設計用戶,所以我不能嵌入用戶在評論中作爲作者。也許我需要一個作者模型,可以嵌入,但引用作爲inverse_of用戶模型:作者 – 2011-02-17 23:00:03

回答

1

如果我理解這個問題正確,您可以定義的關聯是這樣的:

class User 
    include Mongoid::Document  
    field :name, :type => String  
    references_many :comments, :inverse_of => :author 
    references_and_referenced_in_many :comments_received, :class_name => 'Comment', :inverse_of => :recipients 
end 

class Comment 
    include Mongoid::Document  
    field :text, :type => String 
    referenced_in :author, :class_name => 'User' 
    references_and_referenced_in_many :recipients, :class_name => 'User', :inverse_of => :comments_received 
end 

如果目標無法推斷從關聯名稱中您需要添加一個:class_name參數。這使得可以有多個關聯到同一個類。

+0

非常感謝你,我在某些時候使用反或class_name。沒有考慮把它們放在一起,也不知道有關references_and_referenced_in_many。真棒。 – 2011-02-19 09:09:58