obj = {
id: 1
models: [
{
id: 1,
parent_id: nil
},
{
id: 2,
parent_id: 1
},
{
id: 3,
parent_id: 1
},
{
id: 4,
parent_id: nil
},
{
id: 5,
parent_id: 4
},
{
id: 6,
parent_id: 4
}
]
}
praent_id
это идентификатор того же моделя у которых оно nil
.dup
new_obj = obj.dup
new_obj.save!
obj.models.each do |m|
new_obj.models << m.dup
end
parent_id
остаеться прежним.[
{
id: 123,
parent_id: nil
},
{
id: 456,
parent_id: 123
}
]
[
{
id: 457,
parent_id: nil
},
{
id: 458,
parent_id: 123
}
]
[
{
id: 457,
parent_id: nil
},
{
id: 458,
parent_id: 457
}
]
parent_id
для моделей ? new_obj = {id: new_id, models: []}
prev_model = nil
obj[:models].each do |m|
new_model = m.dup
new_model[:parent_id] = prev_model[:id] unless prev_model.nil?
new_obj[:models] << new_model
prev_model = new_model
end