campo calculado en RoR (actuar como un método ActiveRecord)
-
20-09-2019 - |
Pregunta
Estoy construyendo una aplicación para las pruebas cognitivas en los carriles.
Tengo una serie de pruebas (objetos Quiz
) para mis visitantes. En la página de inicio que desee mostrar sólo cuestionarios están listos para el consumo: tienen que tener una serie de preguntas y una serie de posibles respuestas
.
Por supuesto que podría consultar con SQL, o volver a intentar crear un método de clase, donde todos los objetos Quiz.questions.size > 1 && Quiz.answer.size > 1
.
Aún así, me gustaría una forma más elegante / abstraído.
¿Hay alguna forma de consulta tiene un 'listo' método de actuación como si fuera un método ActiveRecord, por lo que se puede llamar Quiz.find_all_by_ready(1)
y poner ready
en cualquier condición de prueba?
El almacenamiento en caché es una posibilidad, me preguntaba si había una alternativa dinámica. ¿Cómo sería un gurú rieles resolver el problema?
Saludos, España Davide
Solución
El uso de una combinación de named_scope y counter_caches se podría hacer algo como esto:
class Quiz < AR:B
named_scope :ready, :conditions => ['quizes.questions_count > 0 AND quizes.answers_count > 0']
end
@quizes = Quiz.ready
Espero que esto ayude!