【问题标题】:Query/scope not including unsaved records in association查询/范围不包括关联中未保存的记录
【发布时间】:2014-05-25 21:42:58
【问题描述】:

场景:我有一个测验类型设置,其中Questions 有很多Answers,还有一个由用户提供的Response(省略)。 response 有一个 selected 属性来指示用户的选择,还有一个 correct? 方法将selectedcorrect_answer 进行比较。

代码:在this GitHub repo 中,以及种子数据。快速链接:

问题:我想返回一个问题的所有正确答案,但是不包括未保存的记录。

我尝试了几种不同的方法,正如您在代码中看到的那样,包括范围、question.correct_responsesinverse_of(我已经读过它现在应该是自动的) - 但无济于事.

基本上,我希望以下代码返回 1,而不是 0。

q=Question.first
r=q.responses.build
r.selected = q.correct_answer
q.responses.correct.size # => 0??!  wtf man!?

非常感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 associations


    【解决方案1】:

    当您使用scope 时,您将进入数据库。

    由于您没有保存响应,因此您不想访问数据库。相反,您应该使用类似下面的行,它将选择问题的所有“正确”回答,然后计算它们。

    q.responses.select { |r| r.correct? }.size
    

    编辑:select 的简短语法:

    q.responses.select(&:correct?).size
    

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 1970-01-01
      • 2017-03-10
      • 2022-12-18
      • 1970-01-01
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多