小编Bre*_*her的帖子

Rails多态依赖:: destroy无法正常工作

假设我有三个Active Record模型:

class Tissue
  has_many :boogers, as: :boogerable, dependent: :destroy
end

class Finger
  has_many :boogers, as: :boogerable, dependent: :destroy
end

Class Boogers
  belongs_to :boogerable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)

假设我的应用程序可以将鼻屎从手指转移到组织上,一旦完成,手指就会被摧毁(哎呀!).出于某种原因,当手指被摧毁时,它也会破坏先前属于它的鼻屎并且因此被转移到组织中.在日志中我可以看到,当手指被摧毁时,它会记住用于属于它的鼻屎的ID并将其销毁.它不会检查以确保boogerable_type仍然是"手指",因此会破坏类型为"组织"的那些.

当手指被摧毁时,它正在这样做:

DELETE FROM boogers WHERE booger.id = 387
Run Code Online (Sandbox Code Playgroud)

什么时候应该这样做:

DELETE FROM boogers WHERE boogerable_id = 1 AND boogerable_type = 'finger'
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个?

ruby-on-rails-3 ruby-on-rails-4

15
推荐指数
1
解决办法
5072
查看次数

标签 统计

ruby-on-rails-3 ×1

ruby-on-rails-4 ×1