¿Cómo acceder al modelo asociado a través de otro modelo en Rails?

ACTUALIZACIÓN (la versión anterior específica y más detallada está abajo):

Estoy desarrollando un sitio web de estaciones de TV. Aquí están los requisitos para la sección de mi programa:

CadaProgram Tiene unoCategory.CadaProgram Tiene unoSubcategory.CadaCategory tiene muchosSubcategoriesCadaCategory tiene muchosPrograms.CadaSubcategory Tiene unoCategoryCadaSubcategory tiene muchosPrograms.

Quiero recuperar todos estos tres modelos para ser asociados. Por ejemplo, debería poder recuperar los datos a continuación de mis vistas:

Mientras:

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

Debería poder recuperar y también EDITAR estos:

p.program_category
p.program_subcategory

o

program_category.programs
program_subcategory.programs

Puedes ver lo que intenté a continuación para cumplir con estos requisitos. Puedes recomendarme una forma totalmente diferente o corregir mis errores.

Gracias

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

Tengo 3 modelos. Se supone que están anidadas entre sí.

Categoría de programa> Categoría de programa> Programa

Aquí están mis códigos:

ProgramCategoría modelo:

 has_many :programs
 has_many :program_subcategories

Modelo de subcategoría de programa:

belongs_to :program_category
has_many :programs

Modelo del programa:

belongs_to :program_category
belongs_to :program_subcategory

Al crear un nuevo programa, puedo establecer su categoría y todo está bien. Puedo acceder a ellos desde ambos lados. Por ejemplo,

program.program_category

Me da lo que esperaba. y también

program_category.programs

También me da lo que quiero tener.

PERO, -aquí viene la pregunta-

Cuando intento accederprogram.program_subcategory, Recibo solo un nil

Aunque la categoría de mi subcategoría está establecida y la categoría de mi programa también, por qué no puedo accederprogram.program_subcategory ¿directamente?

Cuando escriboprogram_category.program_subcategories, Recibo todas las subcategorías de propiedad de esa categoría. Pero NO PUEDO obtener Subcategorías directamente deProgram objeto.

Mi esquema está abajo. Cualquier ayuda es apreciada.

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta