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 wieleSubcategories
KażdyCategory
ma wielePrograms
.KażdySubcategory
ma jedenCategory
KażdySubcategory
ma wieleProgram
s.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