有一个包含字段的表:id,name,id_cat 请显示输出这些类别的方法示例。您想在控制器或帮助程序中实现此方法的位置?帮助实现这种递归方法。
答案 0 :(得分:0)
正如我所理解的那样,你有通过列id_cat实现循环引用的Category表。
以下模型应该按预期工作:
class Category < ActiveRecord::Base
belongs_to :supercategory, :class_name => "Category", :foreign_key => "cat_id"
has_many :subcategories, :class_name => "Category", :foreign_key => "cat_id"
end
所以如果categories
表看起来像:
id | name | cat_id
---------------------------
1 | cat 1 | null
2 | cat 1.1 | 1
3 | cat 1.2 | 1
4 | cat 2 | null
5 | cat 1.2.1 | 3
Category.find(1).subcategories
返回包含cat 1.1
和cat 1.2
个对象的数组。
Category.find(1).supercategory
返回nil
Category.find(3).supercategory
返回cat 1
对象
Category.find(4).supercategory
返回nil
...