Таблицы, представляющие перечисляемый список кодов в Rails? - PullRequest
0 голосов
/ 01 июня 2009

Я просматривал похожие вопросы, но все еще немного озадачен тем, что кажется простым примером в Rails.

Допустим, у меня есть класс модели с именем Employee. Одним из атрибутов сотрудника является его security_clearance, то есть строка, которая может быть None, Some или Full. Другие значения не действительны. В других приложениях я, вероятно, представляю эту таблицу Employees, которая имеет внешний ключ к таблице SecurityClearances, которая содержит ровно три строки. Таблица SecurityClearances имеет столбцы, озаглавленные code (например, SEC_CLEARANCE_NONE, SEC_CLEARANCE_SOME, ...) и value ("Нет", "Некоторые", "Полный").

Как я хочу сделать это в Rails? Хочу ли я has_one :security_clearance на Employee и belongs_to :employee на SecurityClearance? Это не совсем правильно.

Кажется неоптимальным везде печатать строковые литералы None, Some и Full, тем более что отображаемые значения могут измениться (например, возможно, строка для кода Some изменится на low clearance вместо).

<Ч />

Обновление:

Теперь, когда я еще об этом подумаю, разве я не хочу просто belongs_to :security_clearance на Сотрудника? Это бы сработало, верно? Сотрудники должны знать, каковы их уровни допуска, но уровни допуска не привязаны к конкретному сотруднику.

Ответы [ 2 ]

1 голос
/ 02 июня 2009

Также проверьте плагин Enum Fields от людей GiraffeSoft: http://giraffesoft.ca/blog/2009/02/17/floss-week-day-2-the-enum-field-rails-plugin.html

1 голос
/ 01 июня 2009

Взгляните на этот плагин: http://github.com/mlightner/enumerations_mixin/tree/master

Позволяет определить это как has_enumerated :security_clearance, кроме того, кеширование модели SecurityClearance и т. Д.

Однако, без плагина, вы правы насчет отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...