我有以下型号:
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 =&gt; :提供者 - 我想知道这是不是删除提供者的原因。
感谢您的帮助
编辑:
好的,这与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不会以错误退出。
答案 0 :(得分:1)
您还可以尝试,将:dependent =:destroy,更改为:dependent =&gt; :删除。查看提供程序是否被删除。如果他们这样做,它可能与您的代码有关,以防止删除。