假设我在轨道上有这些模型。
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
我的主要目标是无论如何将数据批量插入父对象和子对象。
答案 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