我试图与父母建立一个类别系统。以下是我的数据库的结构
- id
- 姓名
- parent_id
基本上我想要它做的是检查是否有父ID,如果是,则检查父ID,以及父母是否有父ID,依此类推。然后按顺序输出父母,直到它到达孩子。
目前我在做什么(在Ruby / Ruby on Rails中)是这样的:
<% @cat = Category.find_by_id(@project.category) %>
<% if @cat.parent_id.nil? %>
<%= @cat %>
<% else %>
<%= Category.find_by_id(@cat.parent_id).name%> => <%= @cat.name %>
<% end %>
这个问题是它只获得一个父母。我需要它来递归并不断收集父母直到它结束,并且我也不希望它占用太多的记忆。任何帮助,将不胜感激。谢谢! :)
答案 0 :(得分:2)
在模型上添加方法以搜索父
class Category
# inline, less memory usage
def last_parent
last = self
while last.parent
last = last.parent
end
last
end
# recursive, better readability
def last_parent_recursive
if parent
parent.last_parent_recursive
else
self
end
end
end
然后,在你的观点上:
<%= @cat.last_parent %>