请考虑以下事项:
class Parent
include Mongoid::Document
field:name
references_one :child
before_create :initialize_child
protected
def initialize_child
self.child = Child.create
end
end
class Child
include Mongoid::Document
field:name
referenced_in :parent
end
在控制台中,我得到以下奇怪的行为:
> p = Parent.create
=> #<Parent _id: 4d811748fc15ea355d00000b, name: nil>
> p.child
=> #<Child _id: 4d811748fc15ea355d00000c, name: nil, parent_id: BSON::ObjectId('4d811748fc15ea355d00000b')>
到目前为止一切顺利。现在,当我尝试获取父母,然后找到孩子 - 没有运气......
> p = Parent.last
=> #<Parent _id: 4d811748fc15ea355d00000b, name: nil>
> p.child
=> nil
mongoid rc6和rc7
都会发生这种情况我做错了什么(我是mongoid的新手)还是这个bug?有什么工作吗?
谢谢!
乔纳森
答案 0 :(得分:4)
由于未嵌入子级,因此不会自动将其保存在自己的
中尝试
class Parent
include Mongoid::Document
field:name
references_one :child, autosave: true
before_create :initialize_child
protected
def initialize_child
self.child ||= Child.new
end
end
此外 - 您可能希望将Child嵌入父文档中。如果是这样,您将需要切换到“embedded_in”