2009-10-06 1 views
1

레일스에서인지 테스트를위한 앱을 구축 중입니다.
내 방문객을위한 여러 가지 테스트 (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