Скажем, у меня есть следующее приложение Rails 4:
class Person < ActiveRecord::Base
has_many :email_addresses, as: :emailable
has_one :user_account
end
class EmailAddress < ActiveRecord::Base
belongs_to :emailable, polymorphic: true
# There is an :address column
end
class UserAccount < ActiveRecord::Base
belongs_to :person
end
У человека может быть несколько адресов электронной почты. У человека также может быть учетная запись пользователя. (Я переместил это в свою собственную модель, потому что не все люди будут пользователями.) Любой пользовательский адрес электронной почты может использоваться как "имя пользователя" при входе в систему.
Учитывая это, я хотел бы использовать драгоценный камень Devise. Я вижу, вы можете указать модель, к которой применяется аутентификация. User
широко используется, но я бы использовал UserAccount
. Тем не менее, Devise ожидает, что поле электронной почты (имя пользователя) будет в этой модели.
Когда пользователь регистрирует учетную запись пользователя, на самом деле будет создано три связанные записи (Person, EmailAddress и UserAccount). Я не могу понять, как заставить Devise работать с этой настройкой. Есть идеи? Спасибо за любую помощь.