如何直接存储具有has_many关系的模型的哈希,而不在Rails Mongoid中使用.new(没有初始化对象)?

时间:2016-07-25 07:09:16

标签: ruby-on-rails mongoid

假设我在轨道上有这些模型。

ParentObject模型

class ParentObject
  include Mongoid::Document
  has_many :child_objects, autosave: true, dependent: :destroy
  accepts_nested_attributes_for :child_objects

  field :p_test_field, type: String
  field :p_test_field_two, type: String
end

ChildObject模型

class ChildObject < ParentObject
  include Mongoid::Document

  belongs_to :parent_object

  field :c_test_field, type: String
  field :c_test_field_two, type: String
end

现在要保存数据,我使用此代码。

@parent_object = ParentObject.new(parent_object_params)
@parent_object.child_objects_attributes = {"0" => {:c_test_field => "test2"}}
@parent_object.save

这就是数据的保存方式。现在我想使用散列来保存数据而不使用.new方法,即不初始化对象。怎么办?我只想存储一个哈希值,该哈希值包含子对象和父对象的值。该哈希的格式是什么?我的意思是我甚至没有parent_object_id

我的主要目标是无论如何将数据批量插入父对象和子对象。

1 个答案:

答案 0 :(得分:1)

哈希应包含child_objects_attributes哈希

的数组
{
  :p_test_field => "attr test one",
  :p_test_field_two => "attr test two",
  ...
  :child_objects_attributes => [
    { :c_test_field => "test 1" }
  ]
}

通过此调用ParentObject.create(hash)将创建对象及其关联。

请参阅https://mongoid.github.io/en/mongoid/docs/nested_attributes.html