Wie greife ich über ein anderes Modell in Rails auf das zugehörige Modell zu?
UPDATE (spezifische und detailliertere frühere Version ist unten):
Ich entwickle eine Website für einen Fernsehsender. Hier sind die Anforderungen für meinen Programmabschnitt:
JederProgram
hat EINCategory
.JederProgram
hat EINSubcategory
.JederCategory
hat vieleSubcategories
JederCategory
hat vielePrograms
.JederSubcategory
hat EINCategory
JederSubcategory
hat vieleProgram
s.Ich möchte alle diese drei Modelle abrufen, um sie zuzuordnen. Zum Beispiel sollte ich in der Lage sein, folgende Daten aus meinen Ansichten abzurufen:
Während:
p = Program.find(1)
p_cat = ProgramCategory.find(1)
p_subcat = ProgramSubcategory.find(1)
Ich sollte in der Lage sein, diese abzurufen und auch zu BEARBEITEN:
p.program_category
p.program_subcategory
oder
program_category.programs
program_subcategory.programs
Sie können sehen, was ich unten versucht habe, um diese Anforderungen zu erreichen. Sie können mir einen ganz anderen Weg empfehlen oder meine Fehler beheben.
Vielen Dank
================================================ ==========
Ich habe 3 Modelle. Sie sollen ineinander verschachtelt sein.
ProgramCategory> ProgramSubcategory> Program
Hier sind meine Codes:
ProgramCategory-Modell:
has_many :programs
has_many :program_subcategories
ProgramSubcategory-Modell:
belongs_to :program_category
has_many :programs
Programmmodell:
belongs_to :program_category
belongs_to :program_subcategory
Wenn ich ein neues Programm erstelle, kann ich seine Kategorie festlegen und alles ist in Ordnung. Ich kann von beiden Seiten darauf zugreifen. Zum Beispiel,
program.program_category
gibt mir was ich erwartet habe. und auch
program_category.programs
gibt mir auch was ich haben will.
ABER, -Hier kommt die Frage-
Wenn ich versuche zuzugreifenprogram.program_subcategory
Ich erhalte nur eine Null.
Obwohl die Kategorie meiner Unterkategorie und die Kategorie meines Programms festgelegt sind, kann ich nicht darauf zugreifenprogram.program_subcategory
direkt?
Wenn ich tippeprogram_category.program_subcategories
Ich erhalte alle Unterkategorien, die zu dieser Kategorie gehören. Aber ich kann keine Unterkategorien von direkt aProgram
Objekt.
Mein Schema ist unten. Jede Hilfe wird geschätzt.
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