如何更新Ruby on Rails 3中的多个列?

Tin*_*n81 14 ruby ruby-on-rails-3 ruby-on-rails-3.2

出于好奇,有没有办法说这个...

user.update_column(:field1, true)
user.update_column(:field2, true)
Run Code Online (Sandbox Code Playgroud)

...在Ruby on Rails中的一行?

据我所知,一种update_columns方法不存在......

Jef*_*man 41

您可以使用update_all如下:

User.where(:id => user.id).update_all({:field1 => true, :field2 => true})
Run Code Online (Sandbox Code Playgroud)

这将生成以下更新语句(mysql):

UPDATE users SET field1 = 1, field2 = 1 WHERE users.id = <whatever>
Run Code Online (Sandbox Code Playgroud)

回调和验证将不会运行.