Berechnetes Feld in RoR (wirkt als Active Methode)
-
20-09-2019 - |
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
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!