Разработать и STI, как войти в систему как базовый класс при регистрации - PullRequest
9 голосов
/ 29 августа 2011

Я уже видел похожие посты, но не смог получить нужный ответ.

У меня есть модель User и я использую STI модель Student, которая является типом User.1004 * Когда я создаю нового ученика, Devise регистрирует этого ученика с учеником_сессии.Проблема в том, что остальная часть моего приложения использует user_session.Итак, я должен создать новую user_session, используя student_session?а потом выйти из ученика?

Или есть способ заставить Devise разрешить создание ученика, но войти в систему как базовая модель пользователя?

Спасибо, Энтони

Ответы [ 2 ]

2 голосов
/ 14 ноября 2013

Проверьте этот пост и посмотрите, поможет ли он вам:

Rails: использование Devise с наследованием одной таблицы

Сводка сводится к следующему:

конфиг / routes.rb:

devise_for :users, :controllers => { :sessions => 'sessions' }, :skip => :registrations
devise_for :students, :skip => :sessions

приложение / контроллеры / sessions_controller.rb:

class SessionsController < Devise::SessionsController
    def create
        rtn = super
        sign_in(resource.type.underscore, resource.type.constantize.send(:find, resource.id)) unless resource.type.nil?
        rtn
    end
end
0 голосов
/ 19 ноября 2013

Для этого вам нужно создать собственный контроллер.Просто пример реализации

#POST create
def create
  student = Student.create(params[:student]) # normal crud with whatever your form params
  sign_in(User.find(student.id)) # this actually signs in the user
  # now redirect the student to the dash board / whatever page manually
end
...