@ HermanD: я думаю, что гораздо лучше хранить значения в целочисленном столбце, а не в строковом столбце по многим причинам.
- Экономит пространство базы данных.
- Проще / быстрее индексировать целое число, чем строку.
- Ваше несложное кодирование удобочитаемой строки в качестве значений в базе данных. (Что произойдет, если клиент скажет, что «Покупка» должна стать «Покупкой»? Теперь пользовательский интерфейс отображает «Покупка» повсюду, но вам нужно продолжать устанавливать «Покупать» в базе данных.)
Итак, если вы храните определенные значения в базе данных в виде целых чисел, то в какой-то момент вам нужно будет показать их пользователю в виде строк, и я думаю, что единственный способ сделать это - программно.
Вы можете переместить эту информацию в другой объект, но, ИМХО, я бы сказал, что это излишнее. Затем вам нужно будет добавить еще одну таблицу базы данных. Добавьте еще один раздел «admin» для добавления, удаления и переименования этих значений и так далее. Не говоря уже о том, что если бы у вас было несколько столбцов, в разных моделях, которым требовалось такое поведение, вам нужно было бы либо создать множество таких объектов (например, stock_positions, stock_actions ,action_kinds и т. Д.), Либо вам пришлось бы разработать достаточно универсально использовать полиморфные ассоциации. Наконец, если название позиции жестко запрограммировано, вы теряете возможность легко локализовать его позднее.
@ frankodwyer: Я должен согласиться с тем, что использование вспомогательного метода, вероятно, лучший способ. Я надеялся, что это может быть «приятным» способом сделать это, но это не похоже на это. На данный момент, я думаю, лучший способ - это создать новый вспомогательный модуль, может быть, что-то вроде StringsHelper, и добавить в него кучу методов для преобразования констант модели в строки. Таким образом, я могу использовать весь материал I18N в помощнике, чтобы извлечь локализованную строку, если мне это понадобится в будущем. Раздражает то, что если кому-то нужно добавить новое значение в столбец моделей, ему также нужно будет добавить проверку для этого в помощнике. Не 100% СУХОЙ, но я думаю, "достаточно близко" ...
Спасибо вам обоим за вклад.
Kenny