Mongoid 不持久关联

发布于 2024-10-22 01:55:56 字数 885 浏览 2 评论 0原文

考虑以下情况:

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 的新手)还是这是一个错误?有什么解决方法吗?

谢谢!!

乔纳森

Consider the following:

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

In a console, i get the following weird behavior:

> p = Parent.create
 => #<Parent _id: 4d811748fc15ea355d00000b, name: nil> 
> p.child
 => #<Child _id: 4d811748fc15ea355d00000c, name: nil, parent_id: BSON::ObjectId('4d811748fc15ea355d00000b')> 

All good so far. Now when I try to fetch the parent, and then find the child -- no luck ...

> p = Parent.last
 => #<Parent _id: 4d811748fc15ea355d00000b, name: nil> 
> p.child
 => nil 

This happens for me with both mongoid rc6 and rc7

Am I doing something wrong (I am new to mongoid) or this a bug? Any work arounds?

Thanks!!

Jonathan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与之呼应 2024-10-29 01:55:56

由于子文件未嵌入,因此它不会自动保存它自己。

也可以尝试

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

- 您可能希望子文件嵌入到父文档中。如果是这样,您需要切换到“embedded_in”

Since the child isn't embedded, it won't auto-save it on its own

Try

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

Also -- you may be expected the Child to be embedded in the Parent document. If so, you'll want to switch to "embedded_in"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文