我正在尝试更新重复键的字段,但它只是添加新记录而不是更新。
这是我正在尝试做的事情
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"
在我的迁移中,我指出了两个独特的字段
create_table :open_offer_counters do |t|
t.integer :offer_id, :unique => true
t.string :udid, :unique => true
t.integer :open_counter
t.timestamps
end
任何想法代码都有问题吗?
答案 0 :(得分:1)
您需要在这些列上添加唯一索引,例如
add_index :open_offer_counters, :offer_id, :unique => true
传递:unique作为列选项不执行任何操作
答案 1 :(得分:0)
在上面的脚本中,你会想到open_counter = open_counter + 1,因此这将变得独一无二,并添加新行。而不是这样。
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,offer_id=offer_id, udid=udid"