只是出於好奇,有沒有辦法說這個......如何更新Ruby on Rails 3中的多個列?
user.update_column(:field1, true)
user.update_column(:field2, true)
...在Ruby on Rails的一條線?
據我知道的update_columns
方法不存在...
只是出於好奇,有沒有辦法說這個......如何更新Ruby on Rails 3中的多個列?
user.update_column(:field1, true)
user.update_column(:field2, true)
...在Ruby on Rails的一條線?
據我知道的update_columns
方法不存在...
您可以使用update_all
如下:
User.where(:id => user.id).update_all({:field1 => true, :field2 => true})
這將生成以下更新語句(mysql):
UPDATE users SET field1 = 1, field2 = 1 WHERE users.id = <whatever>
回調和驗證將不會運行。
什麼做這樣的:
user.attributes = attributes
user.save(validate: false)
如果您需要速度,您還可以直接在AR連接上調用執行。我用這樣的東西來導入大量的數據。
connection = ActiveRecord::Base.connection
email = connection.quote(email)
zip = connection.quote(zip)
connection.execute(%{UPDATE "users" SET "email" = #{email}, "zip" = #{zip} WHERE "users"."id" = #{user.id}})
注意驗證和回調將不會運行。
如果你的目標是不改變的updated_at字段更新記錄,這是不行的。否則,這是要走的路。 – 2016-06-07 16:33:22