Ich fange gerade mit meiner ersten Ruby on Rails-Webanwendung an. Ich habe eine Reihe verschiedener Modelle, Ansichten, Controller und so weiter.
Ich möchte einen guten Ort finden, um Definitionen von wirklich globalen Konstanten festzuhalten, die für meine gesamte App gelten. Insbesondere gelten sie sowohl für die Logik meiner Modelle als auch für die Entscheidungen, die in meinen Ansichten getroffen wurden. Ich kann keinen trockenen Ort finden, an dem diese Definitionen sowohl für alle meine Modelle als auch für alle meine Ansichten verfügbar sind .
Um ein bestimmtes Beispiel zu nennen, möchte ich eine Konstante COLOURS = ['white', 'blue', 'black', 'red', 'green']
. Dies wird überall verwendet, sowohl in Modellen als auch in Ansichten. Wo kann ich es an nur einem Ort definieren, damit es zugänglich ist?
Was ich versucht habe:
- Konstante Klassenvariablen in der Datei model.rb, mit denen sie am meisten verknüpft sind, z
@@COLOURS = [...]
. Aber ich konnte keinen vernünftigen Weg finden, es so zu definieren, dass ich in meine Ansichten schreiben kann,Card.COLOURS
anstatt etwas Klobiges wieCard.first.COLOURS
. - Eine Methode am Modell, so etwas wie
def colours ['white',...] end
- das gleiche Problem. - Eine Methode in application_helper.rb - das mache ich bisher, aber auf die Helfer kann nur in Ansichten zugegriffen werden, nicht in Modellen
- Ich glaube, ich habe etwas in application.rb oder environment.rb ausprobiert, aber diese scheinen nicht wirklich richtig zu sein (und sie scheinen auch nicht zu funktionieren).
Gibt es einfach keine Möglichkeit, etwas zu definieren, auf das sowohl von Modellen als auch von Ansichten aus zugegriffen werden kann? Ich meine, ich weiß, dass Modelle und Ansichten getrennt sein sollten, aber in einigen Bereichen wird es sicherlich Zeiten geben, in denen sie auf dasselbe domänenspezifische Wissen verweisen müssen.