Active Recordのattributesの更新メソッド


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

saveupdateは複数のattributeをまとめて変更してDBに保存します。
保存前にバリデーションチェックをして、エラーがあればDBに保存せずにfalseを返します。

article.save(title: 'hoge')
article.update(title: 'fuga')

複数attributesの更新、エラーあり:save!

saveupdateは複数のattributeをまとめて変更してDBに保存します。
保存前にバリデーションチェックをして、エラーがあればDBに保存せずにRubyのエラー(ActiveRecord::RecordInvalid)を発生させます。

article.save!(title: 'hoge')
article.update!(title: 'fuga')

SQLのUPDATE文:update_all

SQLのUPDATE文のように複数レコードをまとめて更新する場合は、update_allを使います。

Article.where(status: 'deleted').update_all(title: '[deleted]')

🚜 参考リンク

ActiveRecord の attribute 更新方法まとめ - Qiita

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍