Я создаю приложение, в котором пользователь может построить урок из ряда стандартов и вопросов для обучения стандартам, но я не совсем уверен, правильно ли я настроил все правильно или нет.Rails multiple has_many: через и отображение ассоциаций
«Новая» страница позволяет пользователю использовать выпадающее меню для перебирать, чтобы выбрать стандарты через Lesson контроллер
def new
@search = Standard.search(params[:q])
@standards = @search.result
@lesson = Lesson.new
end
def create
@lesson = current_user.selects.build(params[:lesson])
if @lesson.save
redirect_to edit_lesson_path(@lesson)
else
render :action => 'new'
end
end
def edit
@lesson = Lesson.find(params[:id])
@standards = @lesson.standards
end
Как только стандарты будут выбраны, пользователь перенаправляется на «редактировать» страницу, на которой показаны все выбранные стандарты, но это та часть, с которой у меня возникают проблемы, и я не уверен, что мои модели настроены правильно. Существует взаимосвязь между уроками и стандартами для выбора стандартов, а также has_many посредством взаимосвязи между уроками и вопросами, а также для выбора вопросов, связанных с каждым стандартом.
Я пытаюсь перечислить каждый из вопросов, связанных со стандартами под родительским стандартом, я попробовал @questions = @ standards.questions в методе «edit», но вызывается ошибка NoMethod с отношением ActiveRecord. Я также попробовал @questions = Question.where (: standard_id => @standards) в контроллере, но на странице перечислены все вопросы по всем выбранным стандартам под каждым стандартом.
Мой урок модель:
class Lesson < ActiveRecord::Base
attr_accessible :user_id, :name, :grade_id, :text_id, :date, :subject_id, :question_ids
has_many :select_standards
has_many :standards, through: :select_standards
has_many :select_questions
has_many :questions, through: :select_questions
end
Стандартная модель:
class Standard < ActiveRecord::Base
attr_accessible :content, :grade_id, :subject_id
belongs_to :subject
belongs_to :grade
has_many :questions
end
Вопрос модель:
class Question < ActiveRecord::Base
attr_accessible :content, :standard_id
belongs_to :standard
has_many :select_questions
has_many :lessons, through: :select_questions
end
Select_standards:
class Selection < ActiveRecord::Base
attr_accessible :lesson_id, :standard_id
belongs_to :lesson
belongs_to :standard
end
Что такое 'select_standards'? Можете ли вы опубликовать определение модели для этого. – vee
Select_standards была моделью объединения между уроком и стандартами, чтобы удерживать выбор пользователей. Но я думаю, что решил свою проблему! Я добавил «делегат: урок,: to =>: standard,: allow_nil => true» к моей модели вопросов, и теперь я могу позвонить @ lesson.questions. Большое спасибо за Вашу помощь. :) –