我有这个模型
class XmlImport < ActiveRecord::Base
belongs_to :video
belongs_to :user
has_many :events, through: :event_import_records, dependent: :destroy
has_many :event_import_records, dependent: :destroy
has_attached_file :xml
validates_attachment_content_type :xml, :content_type => ["text/xml"]
end
:event_import_records
条目正在被销毁。但是 :events
不是。
has_many through
关联上的dependent:destroy
是否有效?- 还有其他写法吗?如果那不正确
- 如何通过
event_import_records
销毁与XmlImport
关联的所有events
?
最佳答案
您可以在 Rails API 找到那:“如果与 :through 选项一起使用,连接模型上的关联必须是 belongs_to,并且被删除的记录是连接记录,而不是关联记录。”我知道它会删除连接记录,但不会删除关联记录。
如果我是你,我会尝试:
class EventImportRecord < ActiveRecord::Base
has_many :events, dependent: :destroy
end
如果不起作用,我会交换 XmlImport
模型上的 has_many
关系的顺序,因为“请注意:依赖项是使用 Rails 的回调系统实现的,它可以工作通过按顺序处理回调。因此,在 :dependent 选项之前或之后声明的其他回调会影响它的作用。”也可以在 Rails API 的同一页找到。
关于ruby-on-rails - Has_many 通过关联依赖 : destroy not destroying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312068/