请检查我对递归销毁如何工作的理解?
我有一个包含很多帖子的博客对象。这些帖子继续有一个新闻源对象,每次创建帖子时都会创建该对象。当我删除博客时,帖子被删除,但帖子上的新闻源对象没有被删除,给我留下了“幽灵”新闻源对象。
模型 > blog.rb
class Blog < ActiveRecord::Base
attr_accessible :description, :title, :user_id, :cover
belongs_to :user
has_many :posts, :dependent => :destroy
end
模型 > post.rb
class Post < ActiveRecord::Base
attr_accessible :blog_id, :content_1, :type, :user_id, :media, :picture, :event_id
belongs_to :blog
belongs_to :user
end
因此,当我呼吁销毁博客时,它会收集所有帖子并销毁它们。那太棒了!但是我在 post 控制器的销毁函数中有一段特殊的自定义代码,它要求自定义销毁新提要。那不是被调用的。
控制器 > post_controller.rb
def destroy
@post = Post.find(params[:id])
# Delete Feed on the creation of the post
if Feed.exists?(:content1 => 'newpost', :content2 => params[:id])
@feeds = Feed.where(:content1 => 'newpost', :content2 => params[:id])
@feeds.each do |feed|
feed.destroy
end
end
@post.destroy
respond_to do |format|
format.html { redirect_to redirect }
format.json { head :no_content }
end
end
帖子的destroy函数中的那段代码没有被调用,所以newfeed对象没有被销毁。我对依赖破坏功能的理解是错误的吗?
我特别想避免在新闻源和帖子对象之间创建belongs_to 和has_many 关系,因为新闻源对象是由其他类型的用户操作触发的,例如与新朋友交朋友或创建新博客,这取决于它所在的新闻源类型content1 变量。