Как получить доступ к связанной модели через другую модель в Rails?
ОБНОВЛЕНИЕ (конкретная и более подробная предыдущая версия приведена ниже):
Я занимаюсь разработкой веб-сайта телевизионной станции. Вот требования к моему разделу Программы:
EachProgram
has ONE Category
.
Each Program
has ONE Subcategory
.
Each Category
has MANY Subcategories
Each Category
has MANY Programs
.
Each Subcategory
has ONE Category
Each Subcategory
has MANY Program
s.
Я хочу восстановить все эти три модели, которые будут связаны. Например, я должен быть в состоянии получить данные ниже из моих представлений:
В то время как:
p = Program.find(1)
p_cat = ProgramCategory.find(1)
p_subcat = ProgramSubcategory.find(1)
Я должен быть в состоянии получить, а также редактировать эти:
p.program_category
p.program_subcategory
или же
program_category.programs
program_subcategory.programs
Вы можете увидеть, что я пытался ниже для достижения этих требований. Вы можете порекомендовать мне совершенно другой способ или исправить мои ошибки.
Спасибо
============================================================
У меня есть 3 модели. Они должны быть вложены друг в друга.
ProgramCategory > ProgramSubcategory > Program
Вот мои коды:
ProgramCategory модель:
has_many :programs
has_many :program_subcategories
Программа подкатегории модели:
belongs_to :program_category
has_many :programs
Модель программы:
belongs_to :program_category
belongs_to :program_subcategory
Когда я создаю новую Программу, я могу установить ее категорию, и все в порядке. Я могу получить к ним доступ с обеих сторон. Например,
program.program_category
дает мне то, что я ожидал. а также
program_category.programs
дает мне то, что я тоже хочу иметь.
НО, -here comes the question-
Когда я пытаюсь получить доступprogram.program_subcategory
Я получаю только ноль.
Несмотря на то, что категория моей подкатегории установлена и категория моей программы также установлена, почему я не могу получить к ней доступprogram.program_subcategory
напрямую?
Когда я печатаюprogram_category.program_subcategories
Я получаю все подкатегории, принадлежащие этой категории. Но я не могу получить подкатегории напрямуюProgram
объект.
Моя схема ниже. Любая помощь ценится.
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