9

我已经看过类似的帖子,但无法完全得到我需要的答案。

我有一个用户模型并使用 STI 一个学生模型,它是一种用户。

当我创建一个新学生时,Devise 使用 student_session 登录该学生。问题是我的应用程序的其余部分使用了 user_session。那么,我应该使用 student_session 创建一个新的 user_session 吗?然后注销学生?

或者有没有办法让设计允许学生创建,但作为用户基础模型登录?

谢谢你,安东尼

4

2 回答 2

2

查看这篇文章,看看它是否对您有帮助:

Rails:使用带有单表继承的设计

总结主要是做到以下几点:

配置/路由.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
于 2013-11-14T18:14:47.910 回答
0

为此,您必须创建一个自定义控制器。只是一个示例实现

#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
于 2013-11-19T15:36:26.027 回答