RailsのActive Recordでattributesを変更、更新を行う主要なメソッドを紹介します。
🐰 attributesの更新方法
Ruby on Railsで使う代表的な値の更新方法についてです。
特定のattribute更新:attributes=
attributes=
は、特定のattributeを変更します。
オブジェクトの変更をしただけで、DBには保存されていません。
article.attributes = { title: "Hoge", body: "this is content" } |
Attributesを更新:assign_attributes
assign_attributes
は特定のattributeを変更するためのメソッドです。attributes=
と同じくDBには保存しません。
article.assign_attributes({ title: "Hoge", body: "this is content" }) |
複数attributesの更新:save
save
やupdate
は複数のattributeをまとめて変更してDBに保存します。
保存前にバリデーションチェックをして、エラーがあればDBに保存せずにfalse
を返します。
article.save(title: 'hoge') |
複数attributesの更新、エラーあり:save!
save
やupdate
は複数のattributeをまとめて変更してDBに保存します。
保存前にバリデーションチェックをして、エラーがあればDBに保存せずにRubyのエラー(ActiveRecord::RecordInvalid
)を発生させます。
article.save!(title: 'hoge') |
SQLのUPDATE文:update_all
SQLのUPDATE文のように複数レコードをまとめて更新する場合は、update_all
を使います。
Article.where(status: 'deleted').update_all(title: '[deleted]') |
🚜 参考リンク
ActiveRecord の attribute 更新方法まとめ - Qiita