2

Bookその所有者(つまり、それが属するレコード)が破棄されたら、破棄したいと思います。

belongs_toリレーションシップが 1 つしかない場合は、 dependentsimple オプションが機能します。

class Book < ActiveRecord::Base
  belongs_to :shop
end

class Shop < ActiveRecord::Base
  has_many :books, :dependent => :destroy
end

class Cart < ActiveRecord::Base
  has_many :books, :dependent => :destroy
end

belongs_toしかし、より多くの関係がある場合は?例えば:

class Book < ActiveRecord::Base
  belongs_to :shop
  belongs_to :cart
end

その所有者がすべてBook破壊されたら、私は破壊したい。aと aが同じ を所有していて、が破棄されているがそうでない場合、は破棄されません。CartShopBookShopCartBook

4

1 に答える 1

0

ポリモーフィックな belongs_to 関連付けが必要だと思います。

まだまだチェック中ですが:dependent => :destroy

調査によると、「このオプションは、孤立したレコードを残す可能性があるため、別のクラスの has_many リレーションシップと一緒に belongs_to を使用する場合は指定しないでください。」これはまったく同じではありませんが、手動プロセスになることを示唆しているようです。つまり、両方のdependent => :destroyステートメントを削除し、子/親レコードをプログラムで (手動で) 削除します。

于 2012-07-25T19:05:23.380 に答える