削除の方法はこれだけではありません。オブジェクト同士がdependent: :destroyで関連付けられている場合はdestroy
されますが、オブジェクト同士がdependent: :delete_allで関連付けられている場合はdelete
されるのでご注意ください。
出典
気づき
destroy
とdelete
の違いはなんだろう?
destroy
指定した条件のレコードを削除
dependentが設定されている場合は関連付けられたモデルも削除
出典
delete
指定した条件に一致するレコードをSQLを直接実行して削除
関連付けられたモデルは削除しない
出典
def delete(id_or_array)
delete_by(primary_key => id_or_array)
end
...
def delete_by(*args)
where(*args).delete_all
end
出典
感想
難しい。
とりあえず関連付けされたモデルを削除できるかできないかの違い。
しか分からなかった。