14

好奇心から、これを言う方法はありますか...

user.update_column(:field1, true)
user.update_column(:field2, true)

... Ruby on Rails で 1 行で?

私の知る限り、update_columnsメソッドは存在しません...

4

4 に答える 4

43

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>

コールバックと検証は実行されません。

于 2013-08-15T12:23:50.303 に答える
2

次のようにするとどうでしょうか。

user.attributes = attributes
user.save(validate: false)
于 2013-02-14T18:02:07.607 に答える