2010-10-31 1 views
0

Я работаю над Rails-приложением, используя CanCan для RBAC, и у меня есть только три роли и возможно Я добавлю еще 1 или 2 места по дорожке.Недостатки ролей моделирования в виде булевых столбцов в таблице пользователя

Раньше у меня всегда были роли как их собственные сущности, присоединившиеся к пользователям через таблицу ссылок m2m. С таким количеством и статическими ролями это кажется излишним. Поэтому я подумываю о простом добавлении булевых столбцов в таблицу моих пользователей для каждой роли. Я мог бы также использовать битовую маску (например, пример CanCan), но я не слишком увлекаюсь хранением нескольких значений в одном столбце.

Итак, мой вопрос: что лучше всего делать в этой ситуации: битмаски, несколько булевых столбцов или нормализованная связь m2m?

ответ

1

Эксплуатация по принципу YAGNI приведет к моему решению использовать отдельные столбцы бит для каждой роли. Даже если вы добавите еще несколько столбцов с течением времени, управление ими еще проще, чем таблица ссылок m2m. Я полностью согласен с тем, что не использую битмаски, поскольку они скрывают смысл данных.

Я рассматриваю это только со стороны SQL, поскольку у меня нет опыта работы с Rails, CanCan или RBAC.

Смежные вопросы