Ruby on Rails: где определять глобальные константы?

Я только начинаю работать со своим первым веб-приложением Ruby on Rails. У меня есть куча разных моделей, представлений, контроллеров и так далее.

Я хочу найти хорошее место для определения действительно глобальных констант, применимых ко всему моему приложению. В частности, они применяются как в логике моих моделей, так и в решениях, принимаемых с моей точки зрения. Я не могу найти никакого СУХОГО места для размещения этих определений, где они доступны как для всех моих моделей, так и для всех моих представлений.

Чтобы взять конкретный пример, мне нужна константа ЦВЕТА = ['белый', 'синий', 'черный', 'красный', ' зеленый '] . Это используется повсеместно как в моделях, так и в представлениях. Где я могу определить его в одном месте, чтобы он был доступен?

Что я пробовал:

  • Постоянные переменные класса в файле model.rb, с которыми они наиболее связаны, например @@ ЦВЕТА = [...] . Но я не мог найти разумного способа определить это, чтобы я мог писать в своих представлениях Card.COLOURS , а не что-то непонятное вроде Card.first.COLOURS .
  • A метод на модели, что-то вроде def colors ['white', ...] end - та же проблема.
  • Метод в application_helper.rb - это то, чем я пока занимаюсь, но помощники доступны только в представлениях, а не в моделях
  • . Думаю, я мог попробовать что-то в application.rb или environment.rb, но они не Это действительно кажется правильным (и, похоже, они тоже не работают)

Неужели просто нет способа определить что-либо, доступное как из моделей, так и из представлений? Я имею в виду, что я знаю, что модели и представления должны быть отдельными, но наверняка в некоторых доменах будут моменты, когда они должны ссылаться на одни и те же знания, относящиеся к предметной области?

203
задан AlexC 5 November 2010 в 13:46
поделиться