在计算出的回报率字段(充当一个ActiveRecord方法)
-
20-09-2019 - |
题
我建立在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
我希望这有助于!
不隶属于 StackOverflow