gpt4 book ai didi

ruby-on-rails - ActiveRecord 传递关联删除

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:10 24 4
gpt4 key购买 nike

我有以下模型:

class Organization < ActiveRecord::Base
has_many :providers, :dependent => :destroy
has_many :products, :through => :providers
end

class Provider < ActiveRecord::Base
belongs_to :organization
has_many :products, :inverse_of => :provider
end

class Product < ActiveRecord::Base
belongs_to :provider, :inverse_of => :products
end

当我创建一个有提供者(没有产品)的组织,然后用 destroy 删除它时:

Organization.find(1).destroy

Rails 3.0.x 不会删除关联的提供者,留下不存在的 organization_id。这是一种奇怪的行为,我希望那里要么是 nil,要么是提供者被删除(这就是我想要做的)。

我看到有传递关联 has_many :products :through => :providers - 我想知道这是否是提供程序未被删除的原因。

感谢您的帮助

编辑:

好的,这与 Rails 无关,我们在 Provider 类中进行了以下检查

  def prevent_redhat_deletion
if redhat_provider?
errors.add(:base, _("Red Hat provider can not be deleted"))
return false
end
true
end

显然我正在删除一个 redhat_provider。由于某些原因,Rails 不会因错误而退出。

最佳答案

您还可以尝试将 :dependent = :destroy, 更改为 :dependent => :delete。查看提供者是否被删除。如果他们这样做,可能是您的代码阻止了删除。

关于ruby-on-rails - ActiveRecord 传递关联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13846063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com