문제

나는 철도에서인지 테스트를위한 앱을 구축하고 있습니다.
여러 테스트가 있습니다 (Quiz 내 방문자를위한 개체). 홈페이지에서는 소비 준비가 된 퀴즈 만 보여주고 싶습니다. 많은 질문과 많은 가능한 답변이 있어야합니다.
물론 SQL로 쿼리하거나 모든 객체를 재 시도하는 클래스 메소드를 만들 수 있습니다. Quiz.questions.size > 1 && Quiz.answer.size > 1. 그래도 더 우아하고 추상적 인 방법을 원합니다.
쿼리하는 방법이 '준비'메소드가 ActiveRecord 메소드처럼 작용하므로 호출 할 수 있습니다. Quiz.find_all_by_ready(1) 그리고 넣습니다 ready 퀴즈 조건에서? 캐싱은 가능성이 있습니다. 나는 역동적 인 대안이 있는지 궁금합니다. Rails Guru는 어떻게 문제를 해결합니까?

건배,
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