作者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
1F:推 godfat:有 increment, 不过看起来好像也是产生写死的数字... 02/18 16:36
2F:→ godfat:嗯,increment_counter 看起来就会产生你要的了 02/18 16:38
3F:→ shelary:嗯嗯..谢谢啦..不过一次只能加一个栏位.有一点点不方便 02/18 20:27
4F:推 zusocfc:why not update_counters :) 02/25 09:05
5F:→ godfat:rails 还真的是很多长得很像但有点差的 method. 02/25 12:36
6F:推 isfore:加个 transaction 如何? 04/03 17:12