仍在ARs周围(Rails 3.2)。在我的user.rb
模型中,我有这段代码:
def has_answered
self.quizzes.where(finished: true).count != 0
end
在英语中,我想“检查用户是否已回答测验”。
我想将其更改为范围,这是scope :has_answered, includes(:quizzes).where("(finished: true). count > ?", 0)
的效果。我得到语法错误。我有几个问题:
答案 0 :(得分:0)
在这种情况下,您可能最好为用户完成测验的数量实现counter_cache
,或者只是为用户模型添加一个布尔字段,例如has_completed_a_quiz
。
通过这种方式,您可以轻松地将范围添加到用户模型,而无需扫描数据库中可能会成为大型表/慢查询的另一个表。