正确设置医患调查模型的活动记录关联

时间:2015-05-29 16:35:17

标签: ruby-on-rails activerecord associations

我在为医生建立我的Active Record Associations时遇到一些麻烦 - >患者关系。

医生可以为患者创建评估。但在他们创建评估之前,他们必须选择一个模板(对于受伤类型)。模板has_many:问题,问题has_many:答案。

因此模型包括:用户,患者,评估,模板,问题,答案。

用户 - >患者关系非常简单,但我在模板,评估,问题和答案方面遇到了麻烦。我对'has_many:through'感到很困惑。我希望能够调用Template.questions来获取给定模板的问题列表,但能够调用Assessment.questions(而不是Assessment.template.questions)。

然后我可以通过Assessment.questions过滤来获得答案。

以下是我目前的模特协会。目前的设置不允许我调用Assessment.questions(我认为这将由has_many:questions,:through =>:模板处理)。

为了调用Assessment.questions,我需要更改什么?同时接受有关架构的任何其他反馈。

感谢

document.addEventListener("DOMContentLoaded")

1 个答案:

答案 0 :(得分:1)

就个人而言,我会这样做。我可能无法完全理解你的目标,但我认为我做到了:

class Doctor < ActiveRecord::Base
    has_many :assessments
    has_many :patients, :through => :assessments
end

class Patient < ActiveRecord::Base
    has_many :assessments
    has_many :doctors, :through => :assessments
end

class Assessment < ActiveRecord::Base
    has_many :templates
    belongs_to :patient
    belongs_to :doctor
end

class Template < ActiveRecord::Base
    has_many :questions
    belongs_to :assessment
end

class Question < ActiveRecord::Base
    has_many :answers
    belongs_to :template
end

class Answer < ActiveRecord::Base
    belongs_to :question
end