2016-11-28 50 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! 
相关问题