【问题标题】:Mongoid not persisting associationsMongoid 没有持久的关联
【发布时间】:2011-03-16 20:09:47
【问题描述】:

考虑以下几点:

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

谢谢!!

乔纳森

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    由于孩子没有嵌入,它不会自行自动保存

    试试

    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 嵌入到 Parent 文档中。如果是这样,您将要切换到“embedded_in”

    【讨论】:

    • 轰隆隆!我喜欢stackoverflow——谢谢伙计。我不知道那个自动保存模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多