15

Rails 3でこれを行うためのより短い方法はありますか?

user.update_column(:attribute1, value1)
user.update_column(:attribute2, value2)
user.update_column(:attribute3, value3)
user.update_column(:attribute4, value4)

試してみupdate_columnsましたが、Rails 4 でしか利用できません。

助けてくれてありがとう。

4

3 に答える 3

33

Rails 3.x の回避策は次のとおりです。

User.where(id: user.id).update_all(attribute1: value1, attribute2: value2, ...)
于 2013-12-18T23:23:22.550 に答える
0

速度が必要な場合は、AR 接続で直接 execute を呼び出すこともできます。このようなものを使用して、大量のデータをインポートしました。

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}})

検証とコールバックは実行されないことに注意してください。

于 2014-08-06T22:12:27.537 に答える