0

構築しようとしている単純な階層があります。

class Category < ActiveRecord::Base
  attr_accessible :name

  belongs_to :parent, class_name: "Category"
  has_many :children, class_name: "Category", foreign_key: :parent_id
end

ツリーにカテゴリを追加できますが、正常に機能します。ただし、削除すると期待どおりに動作しません。例えば:

root = Category.new(:name => "Root")
child = Category.new(:name => "Child")
child.parent = root
# things are fine to this point. root.children contains child,
# and child.parent is root

root.children.delete child
# at this point root.children is empty, but child.parent is still root

ここで何が起こっているのか考えてみませんか?ありがとう!

4

2 に答える 2

0

:dependent => :destroyリレーションシップに追加できますhas_many。これにより、親が破棄されたときに親の子が削除されます。子の1つだけが破壊された場合、おそらく親を破壊したくないでしょう?

于 2012-09-06T21:58:15.777 に答える
0

回答:それはproduct.reloadです

この説明は、何時間も検索した後に私が見つけた最初の説明です: https ://stackoverflow.com/a/7449957/456280

(また、これはここでの私の質問に直接関連しています:対称ではない多対多の関係で削除しますか?

于 2012-09-07T15:53:59.963 に答える