同様の目的で宝石の祖先を使用しました。これは、少なくとも、あなたが話しているツリー構造のモデル レイヤーでのサポートを提供します。
RailsCastsはそれについてのチュートリアルを行いました。
祖先で遊ぶにはrails console
、たとえば次のようにを使用することをお勧めします。
# category.rb
class Category < ActiveRecord::Base
attr_accessor :name, :parent
has_ancestry
end
# rails console
~/Rails/CTK/jwbc[master] $ rails console
Loading development environment (Rails 3.2.11)
1.9.3p286 > main = Category.create(name: "Main category")
# => created
1.9.3p286 > sub1 = Category.create(name: "First subcategory", parent: main)
# => created
1.9.3p286 > sub2 = Category.create(name: "Sub-subcategory"), parent: sub1)
# => created
1.9.3p286 > main.children
# => Would return sub1
1.9.3p286 > main.descendants
# => Returns sub1 and sub2
1.9.3p286 > Category.at_depth(1)
# => Returns all subcategories, in this case sub1