我的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。
有人能指出我正确的语法吗?
答案 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
作为模型的示例名称;你使用你的。