進捗

主にRubyを使用してます。

ActiveRecord::Persistence::ClassMethods#upsert_allのオプションについて

バッチ処理の高速化に取り組んでいます。
そこで、あるテーブルに対して一括insert、ユニークキーが重複していればupdateという処理を行いたいと考えました。

まずは、Ruby on Rails 6.0から導入された
ActiveRecord::Persistence::ClassMethods#upsert_all

このメソッドで一括処理を実施したのですが、なぜか`Duplicate entry 'x×' for key`が出てしまう。。

ドキュメントをよく見てみると、ユニークキーを指定するオプションのところにしっかりと書かれていました、、

:unique_by
(PostgreSQL and SQLite only)


担当していたシステムはMySQLを使用していたので、当然このオプションは使えません。

なので、activerecord-import
というgemを使用し、一括処理を実施できるようにしました。


ドキュメントはちゃんと読みます。。