Rails ActiveRecordのone_to_many関係でカスケード削除を行うにはどうすればよいですか?
-
05-07-2019 - |
質問
私はone_to_many関係を持つモデルをRailsに持っています。父親を削除するときは、すべての子供を削除したいと思います。どうすればいいですか?ユーザーを削除するときにすべての注文とそのアイテムを削除したい
私のモデルは:
class User < ActiveRecord::Base
has_many :orders, :foreign_key => "id_user"
end
class Order < ActiveRecord::Base
has_many :order_items, :foreign_key => "id_pedido"
belongs_to :user, :foreign_key => "id_usuer"
end
class OrderItem < ActiveRecord::Base
belongs_to :order, :foreign_key => "id_pedido"
end
解決
jdlの答えは正しいです-:dependent =&gt;を追加する必要があります。 :destroy
を両方の関係に追加します。つまり、 User
クラスで has_many:orders
に追加し、 Order
クラスで、 has_many:order_items
に追加します。
外部キーに対するMySQLの動作を変更することもできます。おそらく、それらを ON DELETE CASCADE
に設定します。
他のヒント
探しているのは:dependent =&gt;です。
オプション。 has_many
の:destroy
所属していません StackOverflow