Я пытаюсь создать форму опроса, чтобы Пользователь мог выбрать шаблон опроса, а затем форма будет отображаться с вопросами, специфичными для этого шаблона.ActiveRecord Survey Model ActiveRecord Associations for Doctor -> Пациент
class Survey < ActiveRecord::Base
belongs_to :template
belongs_to :patient
has_many :questions, :through=> :template
has_many :answers, :through=> :questions
end
class Template < ActiveRecord::Base
has_many :surveys
has_many :questions
end
class Question < ActiveRecord::Base
belongs_to :template
has_many :answers
end
class Answer < ActiveRecord::Base
belongs_to :question
belongs_to :survey
end
Таблица вопросы имеет список из 30 предварительно посеянных вопросов, чтобы пойти с каждым шаблоном:
create_table "questions", force: :cascade do |t|
t.integer "template_id"
t.text "content"
t.string "field_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "category"
t.string "options"
t.boolean "additional"
end
acl = Template.create(name:"ACL", body_part:"knee")
acl.questions.create(content:"Diagnosis", field_type:"text_area", category: "S")
я могу назвать Patient.surveys, чтобы получить список всех обследований, связанные с пациентом. Я могу вызвать Patient.surveys.first.questions, чтобы получить список вопросов, связанных с данным опросом.
Но моя дилемма заключается в том, что я не могу понять, как получить ответ, связанный с конкретным вопросом для конкретного опроса. Потому что, поскольку он настроен сейчас, у каждого вопроса есть несколько ответов от многих разных опросов.
В идеале я мог бы позвонить Patient.surveys.first.questions.first.answer, чтобы получить конкретный ответ на этот вопрос для этого опроса.
Но теперь, мне нужно идти что-то вроде Patient.surveys.first.questions.first.answers.where (survey_id: Survey.first.id)
Так что мой вопрос:
Что делать Мне нужно настроить мои ассоциации, чтобы я мог просто позвонить:
Patient.surveys.first.questions.first.answer, чтобы получить правильный ответ, связанный с BOTH вопросом и опросом?
Отлично, я начну с использования вашего первого предложения. Что касается процедурных областей. Я довольно новый - мне придется подробнее изучить это. Любые учебные пособия или статьи, которые вы рекомендуете? Благодаря! –
прекрасный предмет примерно рельсы. Вы можете прыгать прямо к основным источникам, и они заполняют пробелы довольно красиво. http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope – OscillatingMonkey
И идея состоит в том, что вместо запроса на поиск Пациентов, затем запрос на поиск Surveys, затем запрос на поиск вопросов, затем запрос на поиск ответов ... Вы объединяете все это в один запрос, чтобы сэкономить время? –