2

2 つのモデルの間に単純な has_many/belongs_to 関連付けがあります。私の問題は、不要になったオブジェクトを (親モデルから) 削除すると、子モデルのオブジェクト内の外部キーが残ることです。例えば:

has_many :trees, :inverse_of => :forest

belongs_to :forest

オブジェクトを削除してForestも、関連するすべてのオブジェクトにTreeの値が含まれているためforest_id、フロントエンドでエラーが発生します。私が使用できるようなある種のフックはありbefore_destroyますか?おそらくこれには非常に簡単な解決策があると思いますが。

ありがとう

4

2 に答える 2

6

オプションが欲しいと思い:dependentます。

has_many :trees, :inverse_of => :forest, :dependent => :nullify

nilこれにより、関連付けられたモデルが破棄されたときに外部キーが設定されます。:dependent => :destroyモデルを破壊するために使用することもできます。

ここのドキュメントが役立つかもしれません。

于 2012-08-27T10:29:58.480 に答える
0

次のような関連付けで :dependent オプションを追加しました

has_many :trees, :dependent => :destroy

特定の Forest オブジェクトのすべての木を削除します。

于 2012-08-27T10:40:25.887 に答える