これはすべての本を破壊します。それらのすべて。
has_many books, :dependent => :destroy
覚えておくべき重要なことは、関連するすべてのブックでメソッドが:dependent => :destroy呼び出されることです。#destroy各ブックを呼び出すことにより#destroy、各ブックに対して任意のbefore_destroyまたはafter_destroyコールバックが実行されます。
当然、依存する本がたくさんある場合、このプロセスは費用がかかる可能性があります。
は:destroy_all無効です、多分あなたは考えてい:delete_allました。:delete_all(だけでなく)との違い:destroyは、Railsが単一のSQLステートメントを発行して、依存するすべての本のレコードを削除することです。#destroyBookレコードではメソッドは呼び出されず、noまたはbefore_destroycallbackafter_destroyは実行されません。
利点は、単一のSQLステートメントが、各レコードを呼び出すよりも、データベースからレコードを削除する方が何倍も効率的#destroyであることです。
これを知ることは非常に重要です。Bookモデルにコールバックがある場合、定義すると、Bookモデルで定義したコールバックを無視する効果が*_destroyあることに注意してください。:dependent => :delete_all