2014-02-22 25 views
0
從另一個文檔參考兩幅同一文檔的

我試圖來存儲郵件,我想保存,並從如下用戶參考:在Mongoid

class Message 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    field :from, type: Moped::BSON::ObjectId 
    field :to, type: Moped::BSON::ObjectId 
end 

class User 
    include Mongoid::Document 
    field :username, type: String 
end 

是在這樣做的正確的方式上面?我可以想象一種方法是將用戶創建爲自定義類型,但這似乎是一個漫長的方向。理想情況下,我希望能夠直接引用用戶,如下所示:message.from.usernamemessage.from['username']並且能夠驗證來自和去往字段的存在。

任何幫助將不勝感激。

回答

0
class Message 
    belongs_to :from, class_name: 'User', inverse_of: nil 
    belongs_to :to, class_name: 'User', inverse_of: nil 

... 
Message.where(from: my_user) 
+0

什麼是'inverse_of'?我猜你會把'has_many'放在'User'中嗎? – Cenoc

+0

mongoid文檔將嘗試「神奇地」獲得爲您工作的關係。 IE A - > B和B - > A.但是,有時候,您不希望雙方共享關係。所以,你使用inverse_of:nil來表示沒有相互關係。這是對宏的濫用。 :) – Daniel