2016-05-06 3 views
0

私はfirst_or_createでSidekiqの仕事をしています。Sidekiqの仕事でfirst_or_createを使用する

しかし、これにより、重複した分析レコードが作成されるため、一意性検証が失敗します。これは、first_or_createがアトミックではないためです。

これを行う正しい方法は何ですか?
私は、分析レコードがすでに存在する場合に更新するジョブを同時に実行する必要があります。

答えて

0

「upsert」という用語を参照してください。 ActiveRecordはそれをネイティブに行うことはできませんが、手動でSQLをロールすることができます。

+0

私はPostgresを使用しており、次のクエリは正常に動作するようです。 (top_score)=(#{top_score}) " –

+0

"いいえ、それはうまくいくでしょう。 "(#{standard_id}、#{standard_id}、#{top_score} MySQLは同様のことをすることができます。 –

関連する問題