[問題] ActiveRecord 如何將某欄位值 +1

看板Ruby作者 (新喵小咩)時間16年前 (2009/02/18 16:33), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/1
環境: Ruby 1.8.2 Rails 2.0.2 狀況: 假設我有一個資料庫表格叫做 members 裡面有欄位叫 login_times (登入次數,假設目前為 2 ) 我想要每次登入時都把該欄位加1 這問題看起來好像很簡單? 我現在是這樣寫: @member.login_times = @member.login_times + 1 是有加 1 沒錯, 但是這樣是不行的 因為去看他產生的 SQL 語法寫的是 login_times = 3 但我希望他產生出來的 SQL 語法是 login_times = login_times + 1 有差別嗎? 當然有差別, 當該欄位更新的很頻繁時, 前者就會出問題 所以我想問的是, 要怎樣寫才能產生出 SQL 語法是 直接欄位加1 而不是指定新值 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.48.138

02/18 16:36, , 1F
有 increment, 不過看起來好像也是產生寫死的數字...
02/18 16:36, 1F

02/18 16:38, , 2F
嗯,increment_counter 看起來就會產生你要的了
02/18 16:38, 2F

02/18 20:27, , 3F
嗯嗯..謝謝啦..不過一次只能加一個欄位.有一點點不方便
02/18 20:27, 3F

02/25 09:05, , 4F
why not update_counters :)
02/25 09:05, 4F

02/25 12:36, , 5F
rails 還真的是很多長得很像但有點差的 method.
02/25 12:36, 5F

04/03 17:12, , 6F
加個 transaction 如何?
04/03 17:12, 6F
文章代碼(AID): #19cyV3Wl (Ruby)
文章代碼(AID): #19cyV3Wl (Ruby)