2012-10-29 136 views
0

我試圖更新重複鍵上的字段,但它只是添加新記錄而不是更新。重複密鑰更新問題

這裏是我想做

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 

任何想法,什麼是錯的代碼指出?

回答

1

您需要添加這些列的唯一索引,如

add_index :open_offer_counters, :offer_id, :unique => true 

傳:作爲唯一一列選項不會在你上面的腳本做任何事情

+0

這正是我所需要的。進行新的遷移並刪除\ create \ seed db – Avdept

0

你AR eupdating的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"