Каков наилучший подход для использования колдовства (аутентификации) с несколькими классами пользователей? - PullRequest
2 голосов
/ 25 ноября 2011

Я хочу создать две модели: тренер и клиент.

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

Таким образом, я хотел бы использовать Sorcery для выполнения аутентификации за меня, гем создает по умолчанию модель User.

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

Есть ли лучшее / более простое решение для этих двух типов пользователей, чтобы они могли делиться базовой информацией об аутентификации, но были бы отдельными моделями, которые содержали бы данные, относящиеся к их ролям?


Извините, если я все перепутал.

1 Ответ

1 голос
/ 25 ноября 2011

Какие «данные о ролях» есть у ваших двух пользователей?

Я был в очень похожей ситуации, как вы в приложении, которое я все еще разрабатываю.Я решил использовать ролевый подход с использованием CanCan.

class User < ActiveRecord::Base
  has_one :client_profile # or whatever a client has here
  has_one :trainer_profile # or whatever a trainer has here
end

Затем вы определите свои способности

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # anonymous user
    if user.is? :trainer
      can :create, TrainerProfile
      # some other trainer specific roles here, like editing his/her profile
    elseif user.is? :client
      can :create, ClientProfile
      # some other client specific roles here, like editing his/her profile
    end
  end
end

Конечно, в приведенном выше коде предполагается, что?метод класса User для проверки роли пользователя.

Более подробную информацию о CanCan можно найти в CanCan wiki , а также в Railscast на CanCan .

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