我正在为Rails中的认知测试构建一个应用程序
我为访问者提供了许多测试(Quiz
个对象)。在主页中,我只想显示可供使用的测验:它们必须有许多问题和许多可能的答案。
当然我可以用SQL查询,或者创建一个重试Quiz.questions.size > 1 && Quiz.answer.size > 1
所有对象的类方法。
不过,我想要一种更优雅/抽象的方式
有没有办法查询有一个'ready'方法就好像它是一个ActiveRecord方法,所以我可以调用Quiz.find_all_by_ready(1)
并将ready
置于任何测验条件中?
缓存是一种可能性,我想知道是否存在动态替代方案。铁路大师如何解决问题?
干杯,
的Davide
答案 0 :(得分: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
我希望这有帮助!