、これを言うための方法は、Ruby on Railsの内の1つのラインで... ...Ruby on Rails 3で複数の列を更新するには?ただ、好奇心のうち
user.update_column(:field1, true)
user.update_column(:field2, true)
ありますか?私の知る限りupdate_columns
方法は存在しません知っているよう
...
、これを言うための方法は、Ruby on Railsの内の1つのラインで... ...Ruby on Rails 3で複数の列を更新するには?ただ、好奇心のうち
user.update_column(:field1, true)
user.update_column(:field2, true)
ありますか?私の知る限り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}})
検証とコールバックは実行されません。 https://stackoverflow.com/a/25171127/1520775
あなたの目標はupdated_atのフィールドを変更せずにレコードを更新する場合、これは動作しません。それ以外の場合、それは行く方法です。 –