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 vieleSubcategoriesJederCategory hat vielePrograms.JederSubcategory hat EINCategoryJederSubcategory hat vielePrograms.

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_subcategoryIch 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_subcategoriesIch 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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage