如果没有找到,我想添加一行,如果找到,请更新



以下代码,如果找不到新行,则正确插入新行people。如果找到people,我希望它更新现有行以及import_id但更新不起作用。所以基本上如果新导入包含相同的数据people我只想更新import_id.peoplename age.

Person.transaction do
people.flatten.each do |people|
Person.create_with({ import_id: import.id, **people }).find_or_create_by(**people)
end
end

要重申要求,如果people中的项目与Person匹配nameage,请更新该人员的import_id。如果people中的该项与nameagePerson不匹配,请创建一个新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文档

最新更新