railsでhas_manyで関連しているモデルで親モデルのデータを消したら関連するモデルのデータも連動して消したいときのお話です。 そんなときは、 :dependent を指定してあげればよいわけですが、 :dependentに指定できるものに :destroy と :delete_all があります。違いはひとつひとつ消していくか、一気に消すかの違いです。 詳しくは、 http://rubyist.g.hatena.ne.jp/rochefort/20091126 が参考になります。 関連が1段階ならば、:delete_allの方がよさげな感じなのですが、 関連が2段階以上まであって、最後まで連動させてdeleteしたいときは、delete_allではだめです。 少なくとも子はひとつひとつ処理をする:destroyにしないと孫まで消えないです。 以下みたいな感じにしておけば、 fooを