has_manyのdependentパラメータの値がdestroyとdelete_allの時の違い[Rails]
Railsで、親のレコードと一緒に、関連する子のレコードも消したい時に、
has_manyのdependentパラメータにdestroyを選ぶべきか、delete_allを選ぶべきか迷った
(というか、何も考えずにdestroyをかいたら、delete_allでいいんじゃない?って言われて、違いをしらべた)
ので、メモ。
destroyの場合は、
class Parent < ActiveRecord::Base has_many :children, dependent: :destroy end
Childrenクラスのインスタンスを生成して、destroyを実行していている。
delete_allの場合は、
class Parent < ActiveRecord::Base has_many :children, dependent: :delete_all end
Childrenクラスのインスタンスを生成せずに、親のidを元にSQLを直接発行して削除している。
なので、
みたい。
※Rails3
【参考】