地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

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