次のコードで、プロジェクトでSQLクエリを使用しています:
ActiveRecord::Base.connection.execute "insert into open_offer_counters (offer_id, udid, open_counter) values #{opened_events.join(", ")} on duplicate key update open_counter = open_counter + 1"
私は追加しました
add_index :open_offer_counters, :offer_id, :unique => true
add_index :open_offer_counters, :udid, :unique => true
移行の 1 つに。しかし、重複キーが1つしかないレコードを追加しようとすると、それは機能しませんが、代わりにキーの更新が発生します。基本的に、このコードは 2 つのキー (offer_id と udid) のみが異なる場合に機能します。それらのいずれかが他のものと一致する場合、AR は私の open_counter を更新します。2 つのキー (offer_id と udid) のみが一致した場合、open_counter を更新するにはどうすればよいですか?