2012-07-27 191 views
1

我想通過唯一ID檢查記錄是否已創建。如果是,我想在amount屬性中加1。如果不是,我想創建它,並將金額屬性設置爲1.創建或更新記錄

我已經有了這個:#@have = current_user.haves.create_or_update_by_id(params[:have])但我不太確定如何設置金額。

謝謝

回答

2

使用ActiveRecord的increment方法(Documentation):

@have = current_user.haves.find_or_initialize_by_id(params[:have]) 
@have.increment(:amount) 
@have.save 

它初始化量屬性到零,如果零,並增加了由傳遞的值(默認值爲1)。如果不是零,它只是遞增屬性值。

1

我可能會分裂成兩個操作。

@have = current_user.haves.find_or_initialize_by_id(params[:have]) do |h| 
    h.amount = 0 
end 

@have.amount += 1 
@have.save 

第一statemnt便以其獨特ID查找記錄或初始化一個新的記錄與所提供的ID和金額設置爲0的嵌段僅在初始化運行,而不是上找到。然後我們不管原來的狀態如何增加數量並將記錄保存回數據庫。

+0

做結束塊只在記錄被初始化時執行,但如果找到記錄則不執行? – JohnMerlino 2012-07-27 15:11:21

相關問題