更新 (具体的で詳細な以前のバージョンは以下にあります):
私はテレビ局のウェブサイトを開発しています。私のプログラムセクションの要件は次のとおりです。
- それぞれ
Program
に ONE がありCategory
ます。 - それぞれ
Program
に ONE がありSubcategory
ます。 - それぞれ
Category
に多くのSubcategories
- それぞれ
Category
に MANY がありPrograms
ます。 - それぞれ
Subcategory
に1つCategory
- それぞれ
Subcategory
に MANYがありProgram
ます。
関連付けるこれら 3 つのモデルをすべて取得したいと考えています。たとえば、ビューから以下のデータを取得できるはずです。
その間:
p = Program.find(1)
p_cat = ProgramCategory.find(1)
p_subcat = ProgramSubcategory.find(1)
これらを取得して編集できるはずです。
p.program_category
p.program_subcategory
また
program_category.programs
program_subcategory.programs
これらの要件を達成するために私が試したことを以下に示します。まったく別の方法を勧めたり、間違いを修正したりするかもしれません。
ありがとうございました
================================================== ==========
私は3つのモデルを持っています。それらは互いに入れ子になっているはずです。
ProgramCategory > ProgramSubcategory > プログラム
ここに私のコードがあります:
ProgramCategory モデル:
has_many :programs
has_many :program_subcategories
ProgramSubcategory モデル:
belongs_to :program_category
has_many :programs
プログラム モデル:
belongs_to :program_category
belongs_to :program_subcategory
新しいプログラムを作成すると、そのカテゴリを設定でき、すべて問題ありません。両側からアクセスできます。例えば、
program.program_category
私が期待したものを私に与えます。そしてまた
program_category.programs
私が欲しいものも与えてくれます。
しかし、 -ここで質問があります-
にアクセスしようとするとprogram.program_subcategory
、何も表示されません。
サブカテゴリのカテゴリが設定され、プログラムのカテゴリも設定されているのに、program.program_subcategory
直接アクセスできないのはなぜですか?
と入力するとprogram_category.program_subcategories
、そのカテゴリが所有するすべてのサブカテゴリが表示されます。Program
しかし、オブジェクトから直接サブカテゴリを取得することはできません。
私のスキームは以下です。どんな助けでも感謝します。
ActiveRecord::Schema.define(:version => 20120926181819) do
create_table "program_categories", :force => true do |t|
t.string "title"
t.text "content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "program_subcategories", :force => true do |t|
t.integer "program_category_id"
t.string "title"
t.text "content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "program_subcategories", ["program_category_id"], :name => "index_program_subcategories_on_program_category_id"
create_table "programs", :force => true do |t|
t.integer "program_category_id"
t.integer "program_subcategory_id"
t.string "title"
t.text "content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "programs", ["program_category_id", "program_subcategory_id"], :name => "my_join1", :unique => true
end