6

我在 Rails 中有一个具有 one_to_many 关系的模型。当我删除父亲时,我想删除所有孩子。我该怎么做?我想在删除用户时删除所有订单及其商品

我的模型是:

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
4

2 回答 2

10

jdl 的答案是正确的——你需要添加:dependent => :destroy到两个关系中——即在你的User类中,将它添加到has_many :orders,在你的Order类中,将它添加到has_many :order_items.

您可能还想通过外键更改 MySQL 行为,也许将它们设置为ON DELETE CASCADE.

于 2009-09-10T08:21:23.920 回答
5

您正在寻找的:dependent => :destroyhas_many.

has_many 文档

于 2009-09-10T00:44:07.360 回答