RAILS:如果记录存在,则跳过,否则保存



我的目标skip records that already exist in the database but save new records

我有一个复合唯一密钥如下(在迁移中(:

add_index :table_name, [:feature1, :feature2], unique: true, name: 'idx_name'

我希望rails在检查唯一性时使用此索引。

在模型中,我尝试了以下方法:

records.each do |record|
unless record.persisted?
record.save!
end
end

但我仍然得到:

PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "idx_name"

我如何实现我的目标?

附言:我尝试了以下方法(对我来说是一种黑色魔法……很抱歉(:
validates_uniqueness_of :idx_name, scope: [:my_table]on_duplicate_key_update :idx_name(我认为这不能满足我的要求

谢谢!

您可以尝试Exceptions、Catch和Throw

records.each do |record|
begin
record.save!
rescue PG::UniqueViolation
next
end
end

相关内容

  • 没有找到相关文章