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のレコードを全て削除しています。