如何在Rails ActiveRecord中的one_to_many关系中进行级联删除?

Dan*_*ier 5 activerecord cascade ruby-on-rails cascading-deletes

我有一个带有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
Run Code Online (Sandbox Code Playgroud)

cit*_*ite 10

jdl的答案是正确的 - 您需要添加:dependent => :destroy到两个关系中 - 即在您的User班级中,将其添加到has_many :orders您的Order班级,并在您的班级中添加它has_many :order_items.

您可能还希望更改外键的MySQL行为,也许可以将它们设置为ON DELETE CASCADE.


jdl*_*jdl 5

您正在寻找的是:dependent => :destroy选项has_many.

has_many docs