Чтобы переформулировать требования, если элемент в people
соответствует Person
на name
и age
, обновите import_id
этого человека. Если этот элемент в people
не соответствует Person
на name
и age
, создайте новый Person
и установите import_id
.
Это должно сделать то, что вы ищете.
Person.transaction do
people = [{ name: 'Tom', age: 20 }, { name: 'Jerry', age: 20 }]
people.flatten.each do |person|
Person.find_or_create_by(name: person[:name], age: person[:age])
.update_attributes(import_id: import.id)
end
end
Найти или создать человека по требуемым атрибутам, а затем обновить import_id
в новой или существующей записи.
find_or_create_by документы