我有属于某一类别的产品。而且类别组成了一棵树 父母和子女使用自我联接的结构:
社团:
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
我想使用Thinking Sphinx来索引“低”类别名称和 产品的“高”类别名称,甚至可能是树层次结构中的所有类别名称。
我可以按如下方式索引低类别父类名称:
class Product < ActiveRecord::Base
indexes :name
indexes category.parent.name, as: :low_category
end
注意:“高”和“低”类别之间的节点数是可变的。我需要一种动态添加层次名称的方法。
但是如何在树中进一步索引类别名称呢?我知道我不能使用方法 在TS索引中,我该如何设置数据库?
最重要的是,如何索引“高”类别名称?
答案 0 :(得分: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