Como acessar o modelo associado através de outro modelo no Rails?

UPDATE (versão anterior específica e mais detalhada está abaixo):

Estou desenvolvendo um site de emissoras de TV. Aqui estão os requisitos para a minha seção do programa:

CadaProgram tem umCategory.CadaProgram tem umSubcategory.CadaCategory tem muitosSubcategoriesCadaCategory tem muitosPrograms.CadaSubcategory tem umCategoryCadaSubcategory tem muitosPrograms.

Eu quero recuperar todos esses três modelos a serem associados. Por exemplo, devo conseguir recuperar os dados abaixo das minhas visualizações:

Enquanto:

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

Eu deveria ser capaz de recuperar e também EDITAR estes:

p.program_category
p.program_subcategory

ou

program_category.programs
program_subcategory.programs

Você pode ver o que tentei abaixo para atingir esses requisitos. Você pode me recomendar uma maneira totalmente diferente ou consertar meus erros.

Obrigado

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

Eu tenho 3 modelos. Eles deveriam estar aninhados um no outro.

ProgramCategory> ProgramSubcategory> Program

Aqui estão meus códigos:

Modelo ProgramCategory:

 has_many :programs
 has_many :program_subcategories

Modelo de subcategoria de programa:

belongs_to :program_category
has_many :programs

Modelo de Programa:

belongs_to :program_category
belongs_to :program_subcategory

Ao criar um novo programa, posso definir sua categoria e está tudo bem. Eu posso acessá-los de ambos os lados. Por exemplo,

program.program_category

me dá o que eu esperava. e também

program_category.programs

me dá o que eu quero ter também.

MAS, -vem a pergunta-

Quando tento acessarprogram.program_subcategory, Recebo apenas um nulo.

Mesmo que a categoria da minha subcategoria esteja definida e a categoria do meu programa também esteja definida, por que não consigo acessarprogram.program_subcategory diretamente?

Quando eu digitoprogram_category.program_subcategories, Recebo todas as subcategorias pertencentes a essa categoria. Mas eu não posso obter subcategorias diretamente de umProgram objeto.

Meu esquema está abaixo. Qualquer ajuda é appriciated.

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