updateメソッドとは
updateメソッドは、テーブルに保存されているデータの情報を新しくするメソッドです。
引数に更新したい情報を指定して、以下のように記述します。
モデルのインスタンス.update(更新する情報)
参考例
@user = User.find(1)
@user.update(name: '佐藤')
上記の例だと、まずUserのid: 1のレコードをインスタンス変数に代入します。
その変数に対して、updateメソッドでnameを’佐藤’に更新するという処理を行うことができます。
User.find(1)
User Load (23.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
=> #<User:0x0000000120064318 id: 1, name: "加藤", age: 17, gender: "man", created_at: Mon, 29 Nov 2021 17:55:12.691067000 UTC +00:00, updated_at: Mon, 29 Nov 2021 18:55:02.288567000 UTC +00:00>
User.find(1).update(name: '佐藤')
=> [#<User:0x0000000107851260 id: 1, name: "佐藤", age: 17, gender: "man", created_at: Mon, 29 Nov 2021 17:55:12.691067000 UTC +00:00, updated_at: Mon, 29 Nov 2021 18:55:02.288567000 UTC +00:00>,
update_allメソッドとは
updateと変わらず、データを更新したい場合に使うメソッドです。
しかし、updateと違い全てのレコードの情報を一括で更新することができます。
クラスメソッドなので、インスタンスではなくモデルに対して実行します。
モデル名.update(更新する情報)
*全てを変更するので、使用する場合は注意する必要があります。
参考例
User.update_all(name: '田中')
User Update All (3.5ms) UPDATE `users` SET `users`.`name` = '田中'
=> 2
User.all
User Load (0.7ms) SELECT `users`.* FROM `users`
=> [#<User:0x00000001167236b8 id: 1, name: "田中", age: 17, gender: "man", created_at: Mon, 29 Nov 2021 17:55:12.691067000 UTC +00:00, updated_at: Mon, 29 Nov 2021 18:55:02.288567000 UTC +00:00>,
#<User:0x00000001167235f0 id: 2, name: "田中", age: nil, gender: nil, created_at: Mon, 29 Nov 2021 17:57:16.796566000 UTC +00:00, updated_at: Mon, 29 Nov 2021 17:57:16.796566000 UTC +00:00>]
上記の例では、Userテーブルの全てのレコードのnameを’田中’に更新しています。