¿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 muchosSubcategories
CadaCategory
tiene muchosPrograms
.CadaSubcategory
Tiene unoCategory
CadaSubcategory
tiene muchosProgram
s.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