2009-10-06 71 views
1

我正在爲Rails中的認知測試構建應用程序。
我有一些測試(Quiz對象)爲我的訪問者。在主頁中,我只想顯示可供消費的測驗:他們必須有許多問題和一些可能的答案。
當然,我可以用SQL進行查詢,或創建一個類方法,重試所有對象Quiz.questions.size > 1 && Quiz.answer.size > 1。 不過,我想要一個更優雅/抽象的方式。
有沒有辦法查詢有一個'準備好'的方法,就好像它是一個ActiveRecord方法,所以我可以撥打Quiz.find_all_by_ready(1)並把ready在任何測驗條件? 緩存是一種可能性,我想知道是否有一個動態的選擇。一個鐵軌專家如何解決這個問題?RoR中的計算字段(充當ActiveRecord方法)

乾杯,
達維德

回答

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 

我希望這有助於!

+0

我想這是最直接的解決方案,謝謝! – nutsmuggler 2009-10-09 18:25:50