Railsでhas_manyのオプションについてまとめてみた

f:id:ihatov08:20160928222748j:plain

has_manyで子モデルが存在するときに,削除できないようなvalidationを入れたくて、調べたメモです。

has_manyのオプション

dependentオプションを使います。

  • 親モデルが削除されたとき、ひもづく子モデルがある場合、例外を発生させる
     =>dependent: :restrict_with_exception
    今回はこれを使いました!
  • 親モデルが削除されたとき、ひもづく子モデルがある場合、エラーを発生させる
     => dependent: :restrict_with_error
  • 親モデルが削除されたとき、ひもづく子モデルが同時にdestroyされる 
     => dependent: :destroy
  • 親モデルが削除されたとき、ひもづく子モデルがdatabaseから直接削除される。よって、コールバックは発生しない。
     => dependent: :delete_all
  • 親モデルが削除されたとき、ひもづく子モデルの外部キーをnullにする
     => dependent: :nullify

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です