gpt4 book ai didi

ruby-on-rails - before_destroy 和依赖销毁不触发

转载 作者:行者123 更新时间:2023-12-04 01:35:24 27 4
gpt4 key购买 nike

我有以下模型关联:

class Slider < ActiveRecord::Base
has_one :featured_happening, :as => :featured_item, :dependent => :destroy
before_destroy :destroy_featured_happening
after_create :create_featured_happening
end

class FeaturedHappening < ActiveRecord::Base
belongs_to :featured_item, :polymorphic => true
end

当我销毁 Slider对象我认为 dependent => :destroy会自动销毁 featured_item但事实并非如此。

slider Controller
 def destroy    
slider = Slider.find(params[:id])
slider.delete
render(:status => :ok, :nothing => true )
end

因此,我尝试使用 before_destroy 进行回调手动删除 featured_item当一个 slider 对象被销毁并且没有被调用时。

我怎样才能得到 featured_item删除 slider 对象时要删除吗?使用 Rails 3.2。

最佳答案

您刚刚观察到 delete 之间的区别和 destroy .在您的 Controller 中,您调用

slider.delete

这将只执行一个 SQL DELETE但不会调用任何回调。这就是为什么在正常情况下你想使用 destroy反而。它将获取对象(如有必要),调用包括递归销毁在内的回调,然后才从数据库中删除对象。

请参阅 delete 的文档和 destroy了解更多信息。

关于ruby-on-rails - before_destroy 和依赖销毁不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866267/

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