@Ewoqq

Как реализовать возможность регистрации разного типа пользователей?

Как лучше всего реализовать возможность регистрировать разных пользователей(физическое лицо или юридическое) чтобы у каждого типа были разные поля данных(например у юр. лица нет полей фамилия имя и т.д,), но одна сущность, т.е. "пользователь".
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 2
viktorvsk
@viktorvsk
Даете юзеру роль (Физ. лицо / Юр. лицо)
Все роле-специфические поля складываете в хэш. Если используете постгрес - hstore, если sqlite или mysql - то store accessor с полем типа text

Если же у вас не постгрес и нужно индексировать эту информацию, то неповезло.

Первый самый простой вариант - STI. Но нужно понимать, что если полей разных много, то будет много нулевых значений в базе. Это не так что б очень критично, но помнить и понимать - нужно.

Если первый вариант не подошел (не испольщуете постгрес или монгу, то есть, нет поддержки NoSQL), то нужно нормализовывать базу.
Делаете юзера. А у юзера связь с моделью PhysicalUserInfo, LegalEntityUserInfo

Или, как вариант нормализации, создаете сущность "Свойство", которое принадлежит роли. И у одного пользователя будет одно количество свойст (для физлица), у другого - другое (для юрлица) (тогда, конечно, еще и роль вынести в модель для порядка)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы