只是出于好奇,有没有一种方法来表达这个意思...
user.update_column(:field1, true)
user.update_column(:field2, true)
在Ruby on Rails中,有没有一行代码实现更新?
据我所知,update_columns
方法不存在...
只是出于好奇,有没有一种方法来表达这个意思...
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>
回调函数和验证将不会运行。
注意:此功能仅在ActiveRecord
v4.0.2
及更高版本中可用:
您可以这样做:
update_columns(field1: value, filed2: value)
update_all
那样更新updated_at
和回调。 - carbonruser.attributes = attributes
user.save(validate: false)
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}})