我想通過唯一ID檢查記錄是否已創建。如果是,我想在amount屬性中加1。如果不是,我想創建它,並將金額屬性設置爲1.創建或更新記錄
我已經有了這個:#@have = current_user.haves.create_or_update_by_id(params[:have])
但我不太確定如何設置金額。
謝謝
我想通過唯一ID檢查記錄是否已創建。如果是,我想在amount屬性中加1。如果不是,我想創建它,並將金額屬性設置爲1.創建或更新記錄
我已經有了這個:#@have = current_user.haves.create_or_update_by_id(params[:have])
但我不太確定如何設置金額。
謝謝
使用ActiveRecord的increment
方法(Documentation):
@have = current_user.haves.find_or_initialize_by_id(params[:have])
@have.increment(:amount)
@have.save
它初始化量屬性到零,如果零,並增加了由傳遞的值(默認值爲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的嵌段僅在初始化運行,而不是上找到。然後我們不管原來的狀態如何增加數量並將記錄保存回數據庫。
做結束塊只在記錄被初始化時執行,但如果找到記錄則不執行? – JohnMerlino 2012-07-27 15:11:21