1. ホーム
  2. ruby-on-rails

[解決済み】Rails :dependent => :destroy VS :dependent => :delete_all

2022-04-13 06:04:28

質問

railsのガイドでは、このように説明されています。

<ブロッククオート

に関連付けられている場合、オブジェクトはさらに破壊されます。 :dependent => :destroy と関連付けられている場合は、削除されます。 :dependent => :delete_all

なるほど、かっこいい。でも、破棄されるのと削除されるのって、どう違うんだろう? 両方試してみたけど、同じことをしてるみたい。

解決方法は?

コールバックの違いです。

:delete_all は、アプリケーションで直接作成され、SQLで削除されます。

DELETE * FROM users where compagny_id = XXXX

を使用すると :destroy には、すべての子プロセスのインスタンスが存在します。そのため、破壊できない場合や、それぞれが自分の :dependent のように、そのコールバックは呼び出すことができる。