我在我的项目中使用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?
答案 0 :(得分: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