在自连接模型中设置名称

时间:2013-03-16 19:11:31

标签: ruby-on-rails activerecord nested-attributes

我正在使用AwesomeNestedSet gem来填充类别的树。

型号:

class Category < ActiveRecord::Base
 attr_accessible :name, parent_id
 has_many :subcategories, :class_name => "Category", :foreign_key => "parent_id"
 belongs_to :parent_category, :class_name => "Category"
 acts_as_nested_set
end

我需要这样的名字的输出集合:

Category_1
Category_1 >> Category_2
Category_1 >> Category_2 >> Category_3
Category_4

使用最小数量的DB查询来实现它的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

抱歉,回答自己的问题......

简单:

def self.nested_names
    name = ""
    Category.each_with_level(Category.all) do |category, level|
      if category.root?
        name = category.name
      else
        name += " >> " + category.name
      end
      category.name = name
    end
  end