场景:我有一个测验类型设置,其中Questions
有许多Answers
,并且用户提供了Response
(已省略)。 response
具有selected
属性以指示用户的选择,correct?
方法可将selected
与correct_answer
进行比较。
代码:位于this GitHub repo,以及种子数据。快速链接:
问题:我想返回正确问题的所有回复,但不包括未保存的记录。
我尝试了几种不同的方法,因为您将在代码中看到包括范围question.correct_responses
和inverse_of
(我已经读过的)现在是自动的) - 但无济于事。
基本上,我希望以下代码返回1,而不是0。
q=Question.first
r=q.responses.build
r.selected = q.correct_answer
q.responses.correct.size # => 0??! wtf man!?
非常感谢您的协助。
答案 0 :(得分:0)
使用scope
表示您要访问数据库。由于您没有保存响应,因此您不想转到数据库。相反,你应该使用类似下面的行,它将选择所有问题的“正确”响应,然后计算它们。
q.responses.select { |r| r.correct? }.size
编辑或select
的简短语法:
q.responses.select(&:correct?).size