Jak uzyskać dostęp do powiązanego modelu za pomocą innego modelu w Railsach?

AKTUALIZACJA (konkretna i bardziej szczegółowa poprzednia wersja znajduje się poniżej):

Opracowuję stronę internetową stacji telewizyjnej. Oto wymagania dla mojej sekcji programu:

KażdyProgram ma jedenCategory.KażdyProgram ma jedenSubcategory.KażdyCategory ma wieleSubcategoriesKażdyCategory ma wielePrograms.KażdySubcategory ma jedenCategoryKażdySubcategory ma wielePrograms.

Chcę pobrać wszystkie te trzy modele, które mają być powiązane. Na przykład powinienem móc pobrać poniższe dane z moich widoków:

Podczas:

p = Program.find(1)
p_cat = ProgramCategory.find(1)
p_subcat = ProgramSubcategory.find(1)

Powinienem móc pobrać, a także EDYTOWAĆ te:

p.program_category
p.program_subcategory

lub

program_category.programs
program_subcategory.programs

Możesz zobaczyć, co próbowałem poniżej, aby osiągnąć te wymagania. Możesz polecić mnie zupełnie inaczej lub naprawić moje błędy.

Dziękuję Ci

================================================== ==========

Mam 3 modele. Mają być zagnieżdżeni w sobie nawzajem.

ProgramCategory> ProgramSubcategory> Program

Oto moje kody:

Model ProgramCategory:

 has_many :programs
 has_many :program_subcategories

Model podkategorii programu:

belongs_to :program_category
has_many :programs

Model programu:

belongs_to :program_category
belongs_to :program_subcategory

Kiedy tworzę nowy program, mogę ustawić jego kategorię i wszystko jest w porządku. Mogę uzyskać do nich dostęp z obu stron. Na przykład,

program.program_category

daje mi to, czego oczekiwałem. i również

program_category.programs

daje mi też to, co chcę mieć.

ALE, -oto pytanie-

Kiedy próbuję uzyskać dostępprogram.program_subcategory, Otrzymuję tylko zero.

Mimo że moja kategoria subkategorii jest ustawiona, a kategoria mojego programu jest także ustawiona, dlaczego nie mogę uzyskać dostępuprogram.program_subcategory bezpośrednio?

Kiedy piszęprogram_category.program_subcategories, Otrzymuję wszystkie podkategorie należące do tej kategorii. Ale NIE MOGĘ uzyskać bezpośrednio podkategorii aProgram obiekt.

Mój schemat jest poniżej. Każda pomoc jest zatwierdzona.

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

questionAnswers(1)

yourAnswerToTheQuestion