/ / Wo / Wie codiere ich Konstanten in Rails 3? Anwendung [duplizieren] - Ruby-on-Rails, Konstanten

Wo / wie man Konstanten in Rails 3 codiert Anwendung [duplizieren] - Ruby-on-Rails, Konstanten

Mögliche Duplikate:
Ruby on Rails: Wo werden globale Konstanten definiert?

Ich interessiere mich dafür den "Rails Way" weiter zu macheneine neue Anwendung. Ich möchte auch auf Konstanten verweisen, um den Code lesbarer zu machen. Ich habe eine Anwendung, in der ein Benutzer Zugriff auf den Datensatz eines anderen Benutzers anfordern kann. Diese AccessRequest kann einen der folgenden Status haben:

Rezension Verweigert Genehmigt

Ich kann sehen, dass diese Werte im Berichtswesen verwendet werdenFunktionen in der Zukunft, daher möchte ich sie zu Konstanten machen, um Rechtschreib- oder Großschreibprobleme zu vermeiden. Ich dachte, ich würde diese einfach in einer constants.rb-Datei im config / initializers-Verzeichnis ablegen.

Ich möchte diese als AccessRequest bezeichnen:REZENSION. Ist es sinnvoll, sie dort abzulegen, da ich bereits ein Modell namens AccessRequest habe? Oder sie in eine Klasse in einer constants.rb-Datei im config / initializers-Verzeichnis einbinden? Welcher Weg ist der Rails Way?

Antworten:

42 für die Antwort № 1

In Rails 3 müssen keine Konstanten verwendet werden. Es ist besser, den Singleton Rails :: Application zu verwenden.

In Ihrer application.rb können Sie Ihre Konstante wie folgt definieren:

module Yourapp
class Application < Rails::Application

config.access_request.review = "xxx"
end
end

Danach können Sie in Ihrem Code anrufen

Yourapp::Application.config.access_request.review

Nachdem Sie in jeder Umgebung den Wert geändert haben, definieren Sie einfach die Datei config.xx in Ihrer config/environments/production.rb oder eine andere Umgebung.


28 für die Antwort № 2

Verspätete Antwort, aber Posten als diese Antwort nochwird in den Suchergebnissen angezeigt. Das Einfügen der Konstanten in das Modell ist sinnvoll, da sich die Konstante direkt darauf bezieht. Die Verwendung der Rails-Anwendungskonfiguration zum Speichern von Konstanten ist falsch.

Gemäß dem in application.rb aufgeführten Kommentar:

# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded

Dies gilt weiterhin ab Rails 3.