/ / Where / Jak kodować stałe w aplikacji Rails 3 [duplikat] - ruby-on-rails, stałe

Gdzie / Jak kodować stałe w Railsach 3 Aplikacja [duplikat] - ruby-on-rails, stałe

Możliwe duplikaty:
Ruby on Rails: gdzie definiować stałe globalne?

Jestem zainteresowany robieniem tego w „Rails Way”nowa aplikacja. Chciałbym również odnieść się do stałych w pewnym kontekście, aby kod był bardziej czytelny. Mam aplikację, w której użytkownik może poprosić o dostęp do zestawu danych innego użytkownika. AccessRequest może mieć jeden z następujących stanów:

Przejrzeć Odmówiono Zatwierdzony

Widzę te wartości używane w raportowaniufunkcje w przyszłości, dlatego chcę, aby były one stałe, aby uniknąć problemów z pisownią lub dużymi literami. Myślałem, że po prostu umieszczę je w pliku constants.rb w katalogu config / initializers.

Chciałbym nazywać je AccessRequest ::PRZEJRZEĆ. Skoro mam już model o nazwie AccessRequest, czy warto go tam umieścić? A może zawinąć je w klasę w pliku constants.rb w katalogu config / initializers? W którą stronę jest Rails Way?

Odpowiedzi:

42 dla odpowiedzi № 1

Nie musisz używać stałych w Rails 3. Lepiej jest używać singletonu Rails :: Application.

W pliku application.rb możesz zdefiniować constante w następujący sposób:

module Yourapp
class Application < Rails::Application

config.access_request.review = "xxx"
end
end

Po w kodzie możesz zadzwonić

Yourapp::Application.config.access_request.review

Po zmianie wartości w każdym środowisku wystarczy zdefiniować config.xx w swoim config/environments/production.rb lub inne środowisko.


28 dla odpowiedzi nr 2

Spóźniona odpowiedź, ale publikowanie jako ta odpowiedź wciążpojawia się w wynikach wyszukiwania. Umieszczenie stałej w modelu ma sens, ponieważ stała dotyczy bezpośrednio tego modelu. Używanie konfiguracji aplikacji Railsowej do przechowywania stałych jest nieprawidłowe.

Zgodnie z komentarzem wymienionym w application.rb:

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

To nadal obowiązuje od Rails 3.