2012-08-07 86 views
1

我有屬於一個類別的產品。和類別彌補樹 結構由具有家長和使用自孩子加入:Rails思考獅身人面像索引自我加入協會樹結構

協會:

class Category < ActiveRecord::Base 
    has_many :children, class_name: "Category", foreign_key: "parent_id" 
    belongs_to :parent, class_name: "Category" 
end 

class Product < ActiveRecord::Base 
    belongs_to :category 
end 

例如,

Fruits & Vegetables  => "High" Category 
Fresh Fruits   => "Intermediate" Category 
Citrus     => "Low" Category 
Limes Large    => Product 

我想用思考獅身人面像索引產品的「低」類別名稱和 「高」類別名稱,甚至可能是樹層次結構中的所有類別名稱。

我沒有任何麻煩,索引低類別父名稱如下:

class Product < ActiveRecord::Base 
    indexes :name 
    indexes category.parent.name, as: :low_category 
end 

注:節點之間的數字「高」和「低」類別是可變的。我需要一種動態添加分層名稱的方法。

但是,我該如何去索引樹中的分類名稱呢?我知道我不能在TS索引中使用方法 ,所以我如何設置數據庫?

最重要的是,如何索引「高」類別名稱?

回答

1

你能做到這一點嗎?

class Product < ActiveRecord::Base 
    indexes :name 

    category = category.parent 
    indexes category.name, as: :low_category 

    while category.parent do 
    if category.parent 
     indexes category.name, as: :root_category 
    elsif category.parent 
     indexes category.name, as: :high_category 
    else 
     indexes category.name 
    end 

    category = category.parent 
    end 
end 
+0

是的,這將適用於該特定情況,但高和低類別之間的節點數量是可變的。我需要動態生成這些分類,並將其他分類名稱分開。任何方式在TS中做到這一點? – paniwani 2012-08-07 18:49:45

+0

我改變了我的答案。它可能不是更好的解決方案,它應該工作。 – Dougui 2012-08-07 19:03:06

相關問題