如何显示类别和子类别

时间:2012-03-10 16:32:30

标签: ruby-on-rails ruby

有一个包含字段的表:id,name,id_cat 请显示输出这些类别的方法示例。您想在控制器或帮助程序中实现此方法的位置?帮助实现这种递归方法。

1 个答案:

答案 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.1cat 1.2个对象的数组。

Category.find(1).supercategory返回nil

Category.find(3).supercategory返回cat 1对象

Category.find(4).supercategory返回nil

...