Я верю тому, что Вы в настоящее время делаете, прекрасен; Вы сказали, что данные только принадлежат одному контроллеру, и поэтому это - то, где это принадлежит. Если было необходимо для нескольких контроллеров, или если они были более сложными, чем постоянные величины, другие подходы могут иметь смысл.
Для констант, которые действительно не принадлежат больше нигде, у меня есть класс StaticData.
class StaticData
GRAPH_TYPES = ['bar', 'line']
SOMETHING_ELSE = ['A', 'B']
end
Тогда я достигаю его с
StaticData::GRAPH_TYPES
Да, что Вы делаете, прекрасен. Это - больше идиоматического Ruby для вызова константы GRAPH_TYPES
все же.
Кстати, я постарался бы не определять initialize
в Ваших контроллерах. Кажется, что это могло вести для беспокойства.
Если Вы генерируете формы, которые связаны с некоторым ресурсом тогда, то это будет хороший вариант для хранения его в моделях. Вы не должны хранить его в DB, потому что это может быть простой класс или переменные/методы экземпляра.
та же идея для проверки. При проверке экземпляров ресурсов/модели тогда, это будет разумный выбор сохранить параметры проверки в образцовом классе.
Так или иначе, это будет намного ближе к 'массивному образцовому и тонкому контроллеру' шаблон тогда любой из вариантов, которые Вы упомянули.
Я соглашусь кое в чем с IDBD и paradisepete. Использование констант в модели было бы лучшим способом сделать контроллер тонким, а модель толстой. см. Советы по просмотру Rails
Например, если у вас есть контроллер метрик, связанный с метрической моделью. В метрической модели
class Metric Затем в представлении вы можете сделать что-то вроде f.select: graph_type, Metric :: GRAPHTYPES