Уникальные идентификаторы между пользователями и администраторами с помощью Devise Rails - PullRequest
5 голосов
/ 26 февраля 2012

Я установил Devise и создал пользователей, а также администраторов, используя вариант 1 из этого урока https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role

Теперь мне нужна небольшая помощь.При добавлении администраторов создается другая таблица, и возникает вероятность того, что администраторы и обычные пользователи могут иметь одинаковые идентификаторы.

Итак, как именно я смог получить информацию от пользователей и администраторов?Скажем, например, я хочу отобразить всех пользователей?Нужно ли проходить таблицу пользователей, а затем таблицу администраторов?

Или, если я показываю сообщение.Как я узнаю, какую таблицу искать, чтобы получить информацию о пользователе или администраторе?

Я знаю, что могу просто добавить столбец роли в таблицу пользователей, но я хотел этого избежать.

Надеюсь, это имеет смысл, ха-ха

1 Ответ

13 голосов
/ 26 февраля 2012

Я настоятельно рекомендую использовать наследование одной таблицы (STI). Вы можете выполнить STI, добавив столбец с именем type с типом данных string в таблицу users и создать модель admin, а также модель normal_user, которую обе модели будут наследовать от модели user devise драгоценного камня.

class NormalUser < User
end

class Admin < User
end

Столбец типа является зарезервированным словом, которое будет содержать значение NormalUser или Admin в соответствии с типом пользователя, который вы создали.

Для создания администратора используйте Admin.create(...), а для создания обычного пользователя - NormalUser.create(...), где точки являются атрибутами Admin и NormalUser

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