我有一个问题,如果有人能帮助我,我感激不尽。我正在研究一个项目,需要为每个类别和子类别创建类别,并为每个子类别再次创建子子类别。它就像瀑布......对此最好的解决方案是什么?我是否需要为每个模型创建一个模型并将它们相互链接,或者您可以提供更好的解决方案?
答案 0 :(得分:1)
我会使用自我继承+多态和一个包含多个模型的表。
如下:
类别型号:
class Category < ActiveRecord::Base
self.inheritance_column = :child_class
has_many :disabled_category_business_types
has_many :sub_categories, :class_name => 'SubCategory', :foreign_key => :parent_id, :as => :parent
belongs_to :parent, :polymorphic => true
def all_categories
Category.where(:parent_type => 'System')
end
def all_subcategories
Category.where(:child_class => 'SubCategory')
end
def all_subsubcategories
Category.where(:child_class => 'SubSubCategory')
end
def child_ids
return self.sub_category_ids if self.child_class == 'Category'
return self.sub_sub_categories if self.child_class == 'SubCategory'
end
end
子类别模型:
class SubCategory < Category
has_many :sub_sub_categories , :class_name => "SubSubCategory" , :as => :parent , :dependent => :destroy
end
SubSubCategory [您可以更改最适合您的型号名称。]
class SubSubCategory < Category
has_many :items , :class_name => "Item", :foreign_key => :category_id, :dependent => :destroy
end
这将是您正在寻找的解决方案。希望它会有所帮助。
答案 1 :(得分:0)
试试这个gem
它有助于轻松创建模型层次结构(如树)。因此,在您的情况下,您可以使用此gem来构建类别树。例如:
Category A has Category B, Category C
Category B has Category B1, Category B2
and so on!