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 个重复键的记录时,这不起作用,而是发生了更新键。基本上,如果只有 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 回答