在 Sidekiq 作业中使用 first_or_create

Using first_or_create in Sidekiq Job

我有一个 first_or_create 的 Sidekiq 作业。

 class JobWithFirstOrCreate
    analysis = Analysis.where(standard_id: standard_id).first_or_create
    analysis.save!
 end

但是由于创建了重复的分析记录,这会导致唯一性验证失败。我明白这是因为 first_or_create 不是原子的。

那么正确的做法是什么?
我想同时 运行 个作业,如果分析记录已经存在,我会更新,否则插入。

查看术语 "upsert"。 ActiveRecord 无法在本机执行此操作,但您可以手动滚动 SQL。