che*_*ell 11 activerecord ruby-on-rails callback
我有以下模型关联:
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
Run Code Online (Sandbox Code Playgroud)
当我摧毁一个Slider物体时,我认为dependent => :destroy会自动摧毁featured_item它,但事实并非如此.
滑块控制器
def destroy
slider = Slider.find(params[:id])
slider.delete
render(:status => :ok, :nothing => true )
end
Run Code Online (Sandbox Code Playgroud)
所以我尝试了一个回调before_destroy来手动删除featured_item滑块对象被销毁时没有被调用的东西.
我怎样才能获得featured_item被删除时,我删除滑块对象?使用Rails 3.2.
Hol*_*ust 21
你只需观察之间的差异delete和destroy.在你的控制器中你打电话
slider.delete
Run Code Online (Sandbox Code Playgroud)
它只会执行一个SQL,DELETE但不会调用任何回调.这就是为什么在正常情况下你想要使用destroy.它将获取对象(如果需要),调用包括递归销毁的回调,然后从数据库中删除该对象.
| 归档时间: |
|
| 查看次数: |
5093 次 |
| 最近记录: |