Frage

Ich baue eine App für kognitive Tests in Rails.
Ich habe eine Reihe von Tests (Quiz Objekte) für meine Besucher. In der Startseite ich nur zeigen will, Quiz, dass bereit sind, für den Verbrauch: sie eine Reihe von Fragen und eine Reihe möglicher Antworten haben muß
. Natürlich konnte ich mit SQL-Abfrage oder eine Klassenmethode erstellen, um alle Objekte Retrying wo Quiz.questions.size > 1 && Quiz.answer.size > 1. Ich würde nach wie vor, wie eine elegantere / abstrahierte Weise.
Gibt es eine Möglichkeit, um die Abfrage ein ‚ready‘ Methode handeln, als ob es sich um eine Methode Active waren, so dass ich Quiz.find_all_by_ready(1) und in jedem Quiz Zustand versetzt ready anrufen können? Caching ist eine Möglichkeit, ich frage mich, ob es eine dynamische Alternative war. Wie würde ein Schienen-Guru das Problem lösen?

Cheers,
Davide

War es hilfreich?

Lösung

eine Kombination von named_scope und counter_caches Verwenden Sie so etwas wie dies tun könnte:

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

@quizes = Quiz.ready

Ich hoffe, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top