我建立在Rails的认知测试中的应用程序。点击 我有我的观众大量的测试(Quiz对象)。在主页上我想只显示已经准备好消费小测验:他们必须有一些问题和一些可能的答案的结果。 当然,我可以用SQL查询,或创建一个类的方法重试的所有对象,其中Quiz.questions.size > 1 && Quiz.answer.size > 1。 不过,我想更优雅/抽象的方式。结果 有没有一种方法来查询有一个“准备好”方法演技就好像它是一个ActiveRecord的方法,所以我可以调用Quiz.find_all_by_ready(1)并把ready任何测验条件? 缓存是一种可能性,我在想,如果有一个动态的选择。一轨大师将如何解决这个问题呢?

干杯,结果 的Davide

有帮助吗?

解决方案

使用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

我希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top