Pergunta

Estou construindo um aplicativo para testes cognitivos em trilhos.
Eu tenho vários testes (Quiz objetos) para meus visitantes. Na página inicial, quero mostrar apenas testes que estão prontos para o consumo: eles devem ter várias perguntas e várias respostas possíveis.
Claro que eu poderia consultar com SQL ou criar um método de classe, retrate todos os objetos onde Quiz.questions.size > 1 && Quiz.answer.size > 1. Ainda assim, eu gostaria de uma maneira mais elegante/abstraída.
Existe uma maneira de consultar um método 'pronto' agindo como se fosse um método ActiveRecord, para que eu possa ligar Quiz.find_all_by_ready(1) e colocar ready em alguma condição de questionário? O cache é uma possibilidade, eu queria saber se havia uma alternativa dinâmica. Como um guru do Rails resolveria o problema?

Saúde,
Davide

Foi útil?

Solução

Usando uma combinação de nomeado_scope e counter_caches, você pode fazer algo assim:

class Quiz < AR:B
    named_scope :ready, :conditions => ['quizes.questions_count > 0 AND quizes.answers_count > 0']
end

@quizes = Quiz.ready

Eu espero que isso ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top