Rails App: лучший способ моделирования двух пользовательских моделей (таких как Uber).Разрабатывают?1 модель профиля? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть следующие модели (модели не перекрываются, бухгалтер не может быть клиентом):

  • В компании много бухгалтеров
  • У бухгалтера много клиентов

Бухгалтеры и клиенты могут войти в систему или зарегистрироваться.

Каков наилучший способ выполнить аутентификацию?

Вариант A:

Использование Devise с двумя отдельными моделями (Бухгалтер и клиент: https://github.com/plataformatec/devise/wiki/How-to-Setup-Multiple-Devise-User-Models

Вариант B: Использование Devise с одним пользователем модели, затем с другим профилем модели,который содержит некоторую информацию, например, роль столбца.

Плюсы и минусы были бы очень полезны, поскольку я сам задаю свой вопрос каждый раз, когда создаю такое приложение Rails. Я привык работать с вариантом B

Спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Ну, правильное решение зависит от того, как вы собираетесь работать с этими двумя типами пользователей, бухгалтеров и клиентов.Оба варианта разумны, однако я бы остановился на Варианте Б.

Плюсы:

  • Вам не нужно беспокоиться о одинаковом входе моделей бухгалтеров и клиентов.При использовании одной и той же формы входа в систему для входа в систему клиентов и бухгалтеров (я сомневаюсь, что для них будет две разные формы входа в систему), контроллер должен будет выяснить, является ли он клиентом или бухгалтером.Может быть неоднозначность, если указанный логин будет в таблице customers и accountants.Когда вы используете только одну таблицу, users, такой проблемы нет.
  • Вам не нужно дублировать код, связанный с авторизацией.Рано или поздно, но с 2 разными моделями это неизбежно.Разные представления, разные почтовые шаблоны, иногда разные контроллеры.
  • Я не уверен в вашем случае, но один и тот же пользователь может одновременно быть клиентом и бухгалтером.Это больше касается удобства использования, и некоторые приложения действительно разделяют эти учетные записи: у пользователей с двойной ролью есть отдельные учетные записи, один для роли accountant и другой для customer.Как по мне, это не удобно для пользователя, и лучше иметь единый логин с возможностью переключаться между ролями при входе в систему.

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

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