作者shelary (新喵小咩)
看板Ruby
標題[問題] ActiveRecord 如何將某欄位值 +1
時間Wed Feb 18 16:33:06 2009
環境:
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
推 godfat:有 increment, 不過看起來好像也是產生寫死的數字... 02/18 16:36
→ godfat:嗯,increment_counter 看起來就會產生你要的了 02/18 16:38
→ shelary:嗯嗯..謝謝啦..不過一次只能加一個欄位.有一點點不方便 02/18 20:27
推 zusocfc:why not update_counters :) 02/25 09:05
→ godfat:rails 還真的是很多長得很像但有點差的 method. 02/25 12:36
推 isfore:加個 transaction 如何? 04/03 17:12