devise и несколько «пользовательских» моделей

Я использую rails 3.2 и devise 2.0, и я новичок в Rails.

Требования

Я бы хотел добиться следующего:

  • иметь 2 или более «пользовательских» моделей, например. Член, Заказчик, Администратор
  • все модели имеют общие обязательные поля (например, адрес электронной почты и пароль)
  • каждая модель может иметь некоторые уникальные поля (например, компания только для Заказчика)
  • некоторые поля могут быть общими, но не иметь та же проверка (например, имя требуется для клиента, но необязательно для члена)
  • все поля должны быть заполнены во время процесса регистрации, поэтому формы разные
  • форма входа должна быть уникальной

Возможные решения

Я гуглил и искал StackOverflow довольно долгое время, но мне ничего не показалось правильным (я парень из Java, извините :), и теперь я совершенно запутался. Было предложено два решения:

Пользователь одного устройства

Это наиболее частый ответ. Просто создайте пользователя по умолчанию и создайте отношения между пользователем -> пользователем и клиентом -> пользователем. Меня беспокоит, как я могу добиться индивидуального процесса регистрации для каждой модели? Я пробовал разные вещи, но все закончилось беспорядком!

Несколько пользователей устройств

Это решает проблему пользовательской регистрации, и мне это кажется правильным, но уникальная форма входа в систему блокирует. Я нашел ответ на SO ( Devise - вход из двух моделей ), который предлагает переопределить Devise :: Models :: Authenticatable.find_for_authentication (условия). Это кажется сложным (?), И, поскольку я новичок в рельсах, хотел бы знать, может ли это сработать?

Спасибо за совет!

73
задан Community 23 May 2017 в 12:26
поделиться