在以下情况下如何使用mongoid处理嵌套embeds_many?

时间:2020-07-14 13:22:43

标签: ruby-on-rails ruby mongoid

例如,我有三个模型,即modelA,modelB和modelC

class ModelA
  embeds_many :modelBs
  accepts_nested_attributes_for :modelBs
end

class ModelB
  embedded_in :modelA
  embeds_many :modelCs
  accepts_nested_attributes_for :modelBs
end

class ModelC
  embedded_in :modelB
end

我正在尝试从一个控制器(即ModelAcontroller)创建所有三个模型。我该如何在蒙古族中做到这一点?在活动记录中,只需声明accepts_nested_attributes_for即可完成工作。

1 个答案:

答案 0 :(得分:1)

首先,包含Mongoid :: Document

class ModelA
  include Mongoid::Document
  embeds_many :modelBs
end

class ModelB
  include Mongoid::Document
  embedded_in :modelA
  embeds_many :modelCs
end

class ModelC
  include Mongoid::Document
  embedded_in :modelB
end

您可以像这样创建嵌套模型:

a_instance = ModelA.create(
                       modelBs: [ 
                            { modelCs: [{}]}                                    
                            ] 
                           ) 

a_instance.modelBs.first.modelCs.first._id # => BSON::ObjectId('5f0df5e063067000824541b5')