RailsのActive Record(モデル)のdestroy
とdelete
についての紹介です。
🍣 destroy_allについて
destroy_all
は条件にマッチするレコードを関連テーブルも含めて削除します。
Active Recordのオブジェクトを解するので、1行ずつ削除されます。
🤔 delete_allについて
delete_all
はSQLのDELTE文を流します。そのため、関連テーブルの削除は行いません。
まとめてDELTEのSQLを実行するため、削除の効率はよいです。
🐮 destroyでバリデーションを行う
destroy実行前にバリデーションを行う場合はbefore_destroy
のコールバックを使います。
class Article < ActiveRecord::Base |
これで、destroy
の実行時に処理を分岐できます。
if @article.destroy |