1

我正在为 Rails 中的认知测试构建一个应用程序。
我为我的访客提供了许多测试(Quiz对象)。在主页中,我只想显示可供消费的测验:它们必须有许多问题和许多可能的答案。
当然我可以用 SQL 查询,或者创建一个类方法重试所有对象 where Quiz.questions.size > 1 && Quiz.answer.size > 1. 不过,我想要一种更优雅/抽象的方式。
有没有办法查询有一个“准备好的”方法,就像它是一个 ActiveRecord 方法一样,所以我可以调用Quiz.find_all_by_ready(1)ready输入任何测验条件?缓存是一种可能性,我想知道是否有动态的选择。Rails 大师将如何解决问题?

干杯,
戴维德

4

1 回答 1

3

使用 named_scope 和 counter_caches 的组合,您可以执行以下操作:

class Quiz < AR:B
    named_scope :ready, :conditions => ['quizes.questions_count > 0 AND quizes.answers_count > 0']
end

@quizes = Quiz.ready

我希望这有帮助!

于 2009-10-06T13:53:20.303 回答