【Rails】deleteメソッドとdelete_allメソッドの使い方をぞれぞれ解説

deleteメソッドとは

deleteは、テーブルにあるデータを一件削除したい場合に使うメソッドです。

*ただし、そのモデルと関連しているデータは削除されません。

モデル名.find(id).delete

参考例

[36] pry(main)> User.find(5).delete
User Load (1.6ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 5 LIMIT 1
User Destroy (8.8ms)  DELETE FROM `users` WHERE `users`.`id` = 5
=> #<User:0x00000001162fe7e0 id: 5, name: "高橋", age: 23, gender: "women", created_at: Mon, 29 Nov 2021 19:15:08.276537000 UTC +00:00, updated_at: Mon, 29 Nov 2021 19:15:08.276537000 UTC +00:00>

上記の例では、idが5のレコードをdeleteで削除しています。

delete_allメソッドとは

delete_allはdeleteと違い、データを複数削除したい場合に使用します。

*deleteと同じく、関連するデータは削除されません。

モデル名.where(カラム).delete_all

参考例

[38] pry(main)> User.where(id: 3..4).delete_all
  User Destroy (3.9ms)  DELETE FROM `users` WHERE `users`.`id` BETWEEN 3 AND 4
=> 2

[39] pry(main)> User.all
  User Load (0.4ms)  SELECT `users`.* FROM `users`
=> [#<User:0x00000001164833e0 id: 1, name: "田中", age: 17, gender: "men", created_at: Mon, 29 Nov 2021 17:55:12.691067000 UTC +00:00, updated_at: Mon, 29 Nov 2021 19:16:11.445664000 UTC +00:00>,
 #<User:0x0000000116483318 id: 2, name: "田中", age: 42, gender: "men", created_at: Mon, 29 Nov 2021 17:57:16.796566000 UTC +00:00, updated_at: Mon, 29 Nov 2021 19:15:55.029357000 UTC +00:00>]

上記の例では、idが3と4のレコードを一括で削除しています。

[43] pry(main)> User.where(age: 23).delete_all
  User Destroy (3.1ms)  DELETE FROM `users` WHERE `users`.`age` = 23
=> 2

[44] pry(main)> User.all
  User Load (0.4ms)  SELECT `users`.* FROM `users`
=> [#<User:0x0000000116650358 id: 1, name: "田中", age: 17, gender: "men", created_at: Mon, 29 Nov 2021 17:55:12.691067000 UTC +00:00, updated_at: Mon, 29 Nov 2021 19:16:11.445664000 UTC +00:00>,
 #<User:0x0000000116650290 id: 2, name: "田中", age: 42, gender: "men", created_at: Mon, 29 Nov 2021 17:57:16.796566000 UTC +00:00, updated_at: Mon, 29 Nov 2021 19:15:55.029357000 UTC +00:00>]

上記の例だと、ageが23のレコードを全て削除しています。

タイトルとURLをコピーしました