Где/Как закодировать константы в Rails 3 Application

Возможный дубликат:
Ruby on Rails: где определить глобальные константы?

Я заинтересован в том, чтобы сделать это "Rails Way" в новом приложении. Я также хотел бы ссылаться на константы в каком-то контексте, чтобы сделать код более читаемым. У меня есть приложение, в котором пользователь может запросить доступ к другому набору данных пользователей. Этот AccessRequest может иметь один из следующих статусов:

Обзор Отказано Одобрено

Я могу видеть, как эти значения используются в функциях отчетности в будущем, поэтому я хочу сделать их константами, чтобы избежать проблем с орфографией или капитализацией. Я думал, что просто поставлю их в файле constants.rb в каталоге config/initializers.

Я хотел бы называть их AccessRequest:: REVIEW. Поскольку у меня уже есть модель под названием AccessRequest, есть ли смысл ее там положить? Или обернуть их в класс в файле constants.rb в каталоге config/initializers? Каким образом путь Rails?

Ответ 1

Вам не нужно использовать константы в Rails 3. Лучше использовать синглтон Rails:: Application.

В вашем приложении application.rb вы можете определить свою константу, например:

module Yourapp
  class Application < Rails::Application

    config.access_request.review = 'xxx'
  end
end

В коде вы можете позвонить

Yourapp::Application.config.access_request.review

После того, как вы измените значение в каждой среде, вы просто определите config.xx в своей config/environments/production.rb или другой среде.

Ответ 2

Пояснительный ответ, но публикация в виде ответа по-прежнему появляется в результатах поиска. Помещение константы в модель имеет смысл, поскольку константа относится непосредственно к ней. Использование конфигурации приложения Rails для хранения констант неверно.

В соответствии с комментарием, указанным в приложении .rb:

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

Это все еще актуально с Rails 3.