我的 rails 应用程序用于组织包含问题的作业。某些作业共享问题,因此我没有复制该数据,而是选择了第三个表,称为 AssignmentQuestions,将问题链接到作业。
AssignmentQuestions 表还有一个名为“number”的列。
举个例子:我可以有一个化学作业和一个生物学作业,它们都包含这样一个问题“你觉得这个学科最有趣的是什么?”。在化学作业中,这可能是问题 6,而在生物学作业中,这可能是问题 9。在这种情况下,我的表格(包含相关条目)如下:
分配 (ID,名称)
问题 (ID,内容)
作业 问题(assignment_id, questions_id, number)
此设置允许我通过 AssignmentQuestions 将作业与问题相关联,如下所示:
class Assignment < ApplicationRecord
has_many :question_associations, class_name: "AssignmentQuestion"
has_many :questions, through: :question_associations
end
这允许我通过控制台中的表达式访问给定作业的问题内容:
>> Assignment.first.questions.first.content
=> "What do you find most interesting about this subject?"
不过,除此之外,我还想要通过控制台中的类似表达式访问问题编号(该分配独有)的能力:
>> Assignment.first.questions.first.number
=> 6
但是,目前这是不可能的,因为“数字”列位于 AssignmentQuestions 表中,而不是 Questions 表本身。
我想我可以遍历所有关联的 Questions 和 AssignmentQuestions 并构建我自己的对象哈希,其中包含“content”属性和“number”属性。但是,我希望可能有更好的方法通过关联本身来做到这一点,以便在数据库中进行工作。
有没有办法让我加入带有问题关联的数字列,以便我可以访问两者?
您可能希望从作业中获取第一个 question_association 而不是第一个问题:Assignment.first.question_associations.first.number
。
它更有意义遍历该关联,如果你需要的数字太(如:Assignment.first.question_associations.order(number: :asc).includes(:question).each do |assoc|
你有assoc.number
和assoc.question
内环路的数量排序,预加载的问题)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句