2016-11-28 57 views
0

我通過mongoid文檔工作,我試圖找出如何創建嵌入一個新的用戶如何在另一條記錄中嵌入記錄?

class User 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    embeds_one :manager, class_name: "Manager" 
end 

class Manager 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    embedded_in :users, class_name: "User" 
end 

## ------------------------------------------------------------ 

User.create!(
    first_name: "First1" 
    last_name: "Last1" 
) 

內一個新的經理,但如何創建自嵌入一個新的經理嗎?

回答

0

您確定要在此設置embeds_one嗎?因爲對我來說UserManager似乎有相同的屬性,因此,它們可以被包含在單個類User有一個附加列manager_id以確定誰是用戶的經理:

class User 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    belongs_to :manager, class_name: 'User' 
end 

這樣,你可以這樣做:

manager = User.create!(first_name: 'First', last_name: 'Last') 
user = User.create!(first_name: 'First', last_name: 'Last', manager: manager) 

另一個可能的原因是你不希望這裏embeds_one關係是,一個管理器可以管理超過1級的用戶。因此,不可能將相同的管理器文檔嵌入到不同的User文檔中。如果我錯了,請糾正我。

更新

通常情況下(與當前的關係),您可以創建嵌入式記錄如下:

user = User.new(first_name: 'First', last_name: 'Last') 
user.manager = Manager.new(first_name: 'First', last_name: 'Last') 
user.save! 
相關問題