0

次のコードで、プロジェクトで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 を更新するにはどうすればよいですか?

4

1 に答える 1

0

追加で解決した問題

add_index(:open_offer_counters, [:offer_id, :udid], :unique => true)

それ以外の

add_index :open_offer_counters, :offer_id, :unique => true
add_index :open_offer_counters, :udid,  :unique => t
于 2012-10-29T14:17:44.620 に答える