:delete
モデルのコールバックを実行せずに子ドキュメントを削除する。
:destroy
子ドキュメントを破棄し、モデルコールバックを実行します。
:nullify
子ドキュメントの外部キーをnilで更新して子ドキュメントを孤立させる。
:restrict
子ドキュメントが存在する場合に親を削除しようとすると Mongoid::Errors::DeleteRestriction
の例外が発生する。
ActiveRecordの :restrict_with_error
に相当 📝
class Band include Mongoid::Document has_many :albums, dependent: :delete_all belongs_to :label, dependent: :nullify end class Album include Mongoid::Document belongs_to :band end class Label include Mongoid::Document has_many :bands, dependent: :restrict end label = Label.first label.bands.push(Band.first) label.delete # Raises an error since bands is not empty. Band.first.delete # Will delete all associated albums.