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 muitosSubcategories
CadaCategory
tem muitosPrograms
.CadaSubcategory
tem umCategory
CadaSubcategory
tem muitosProgram
s.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