【发布时间】:2015-09-26 18:01:52
【问题描述】:
假设我有一个模型,名为 Student,
一个名为Test的模型(学生在学校参加的测试)
一个名为StudentTest的关联模型,它说明特定学生何时完成特定测试,在什么情况下等等。
一个名为 Questions 的模型,将被测试使用
一个名为 QuestionTest 的关联模型,它说明哪些问题将针对哪些测试。
最后是一个名为 StudentAnswer 的模型,其中包含对 QuestionTest 的引用和对 Student 的引用。
如果我有
st = StudentTest.first
我能做到:
st.test.questions_test
获取分配给该学生的测试题。
但是,如果我想要那个学生的答案,我不能这样做:
st.test.questions_test.student_answers
因为虽然它会得到与那些question_test_id相关的答案,但它不会只与那个student_id相关。
另一种选择是
st.test.question_test.student_answers.where(student_id: st.id).all
或
st.student.student_answers.where(test_id: st.test_id).all
但是为了得到它的 id 而重复变量 st 似乎太多余了。
我的问题是:是否有任何关联我可以声明以使检索答案成为可能:
st.student_answers
还是类似的?
编辑 1:我对关系使用的看法
我在想这样的事情:
student_test.rb
has_many :questions_test, through: :test
has_many :student_answers, through: [:questions_test, :student]
当然,这有语法错误。 through 只会接受一个参数
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 associations