Question

Je construis une application pour les tests cognitifs dans Rails.
J'ai un certain nombre de tests (objets de Quiz) pour mes visiteurs. Dans la page d'accueil Je veux montrer que des jeux-questionnaires qui sont prêts à la consommation: ils doivent avoir un certain nombre de questions et un certain nombre de réponses possibles
. Bien sûr, je pourrais interroger avec SQL, ou créer une méthode de classe réessayant tous les objets où Quiz.questions.size > 1 && Quiz.answer.size > 1. Pourtant, je voudrais une façon plus élégante / abstraire.
Est-il possible d'interroger ont une méthode « prêt » d'agir comme si elle était une méthode ActiveRecord, donc je peux appeler Quiz.find_all_by_ready(1) et mettre ready dans toutes les conditions de jeu-questionnaire? Mise en cache est une possibilité, je me demandais s'il y avait une alternative dynamique. Comment un gourou de rails résoudrait le problème?

Cheers,
Davide

Était-ce utile?

La solution

En utilisant une combinaison de named_scope et counter_caches vous pourriez faire quelque chose comme ceci:

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

@quizes = Quiz.ready

J'espère que cela aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top