Где/Как закодировать константы в 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.