RoR中的计算字段(充当ActiveRecord方法)

时间:2009-10-06 13:38:23

标签: ruby-on-rails activerecord calculated-columns

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

干杯,
的Davide

1 个答案:

答案 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

我希望这有帮助!