我正在处理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 :(得分:0)
您确定要在此处embeds_one
关联吗?因为对我而言,User
和Manager
似乎具有相同的属性,因此,它们可以包含在单个班级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
关系的另一个可能原因是,经理可能管理的用户不止一个。因此,无法在不同的User
文档中嵌入相同的经理文档。如果我错了,请纠正我。
<强>更新强>
通常(使用您当前的关系),您可以按如下方式创建嵌入式记录:
user = User.new(first_name: 'First', last_name: 'Last')
user.manager = Manager.new(first_name: 'First', last_name: 'Last')
user.save!