rails update_all字段和递增计数1

时间:2014-11-13 15:27:27

标签: mysql ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我的mysql表中有一个名为download_count的列,类型为int。

现在我想使用update_all更新一些带有某些值的字段,但也会随之增加download_count。

我尝试了以下语法:

find_record.update_all(username: username, download_date: download_date, "download_count= download_count + 1")

但我相信上述行为就像一个where子句。所以download_count没有更新。 我希望通过上述查询更新用户名,download_date和download_count。

有人能指出我正确的语法吗?

2 个答案:

答案 0 :(得分:3)

尝试

find_record.update_all(["username=?, download_date=?, download_count=download_count+1", username, download_date])

update_all的第二个参数是一个条件。

答案 1 :(得分:1)

另一种方式,它不会通过验证和回调传递

User.find_each do |u| 
  u.update_attributes(
                      username: username, 
                      download_date: download_date, 
                      download_count: u.download_count + 1
                     )
end

阅读此find_each方法的文档,了解其效率的原因。我拿了User作为模型的示例名称;你使用你的。