2016-03-24 25 views
0

質問があります。私はプロジェクトに取り組んでおり、カテゴリを作成する必要があり、それぞれのカテゴリ、サブカテゴリ、サブカテゴリごとにサブカテゴリを作成する必要があります。それは滝のようなものです...そのための最良の解決策は何ですか?それぞれのモデルを作成してお互いにつなぎ合わせるか、より良いソリューションを提供する必要がありますか?Ruby on Railsカテゴリの作成、各カテゴリ、サブカテゴリ、各サブカテゴリごとのサブサブカテゴリ

+0

また、私は国 - >地域 - >都市 - >町 - >地域を示すことができる場所のモデルを作成する必要がありますそれは再び滝のようです!私はそのために最善の解決策が何か分かりません。そのためのRuby Gem? – AdamGol

+1

カテゴリは、自己参照の多対多リレーションシップを使用する2つのモデルでのみ実行できます。場所については、国、都道府県、市町村のフィールドを持つテーブルを作ることができます。あなたがアクティブレコード関係に慣れていないように聞こえるので、これを読んでください:http://guides.rubyonrails.org/association_basics.html – trosborn

+1

これを試してくださいhttp://stackoverflow.com/a/14198034/3437900 – illusionist

答えて

0

は、それが簡単に(ツリーのような)モデルの階層を作成するのに役立ちます。このgem

を試してみましょう。あなたのケースでは、この宝石を使ってカテゴリのツリーを構築することができます。例:

Category A has Category B, Category C 
Category B has Category B1, Category B2 
and so on! 
1

私は自己相続+多型性と複数のモデルを持つ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 

これはあなたが探している解決策になります。それが助けてくれることを願って。

関連する問題