如果我有一个自我指涉的主题类,我想通过我所有的子主题的递归循环,这将是一个很好的Ruby的方式来做到这一点:如何通过自引用子主题进行递归搜索?
@category.topics.all(:parent_id => topic.id).each do |subtopic|
subtopic.delete_tags
@category.topics.all(:parent_id => subtopic.id).each do |subsubtopic|
subsubtopic.delete_tags
@category.topics.all(:parent_id => subsubtopic.id).each do |subsubsubtopic|
subsubtopic.delete_tags
@category.topics.all(:parent_id => subsubsubtopic.id).each do |subsubsubsubtopic|
subsubsubtopic.delete_tags
end
end
end
end
这会进入无限循环吗? – jprete 2009-09-14 22:07:08
如果数据库中存在任何与'parent_id'相同的主题,那么它们会。 – rcoder 2009-09-14 22:10:18
@jprete:如果某个话题是自身的一个子话题,那它只会是无限的。但是这本身就像是一个错误。否则递归会在到达没有子主题的主题时结束。但它似乎应该是':parent_id => self.id'。 – Chuck 2009-09-14 22:17:28