
dependentとは
- 親オブジェクトがdestroyされたとき、関連する子オブジェクトの扱いを制御するオプション
dependentオプションの種類
destroy
- 親オブジェクトが削除されたら子オブジェクトも削除される
- ActiveRecordを介して削除(コールバック処理が実行される)
- クエリが親に紐づいている子の数だけ実行される
class User < ActiveRecord::Base
has_many :posts, dependent: :destroy
end
delete
- 親オブジェクトが削除されたら子オブジェクトも削除される
- SQLを直実行して削除(コールバック処理は実行されない)
class User < ActiveRecord::Base
has_many :posts, dependent: :delete
end
delete_all
- 親オブジェクトが削除されたら関連する子オブジェクトを全て削除する
- SQLを直実行して削除(コールバック処理は実行されない)
class User < ActiveRecord::Base
has_many :posts, dependent: :delete_all
end
nullify
- 親オブジェクトのみが削除されて子オブジェクトをnilに更新する
class User < ActiveRecord::Base
has_many :posts, dependent: :nullify
end
参考記事
railsguides.jp