我已经看过类似的帖子,但无法完全得到我需要的答案。
我有一个用户模型并使用 STI 一个学生模型,它是一种用户。
当我创建一个新学生时,Devise 使用 student_session 登录该学生。问题是我的应用程序的其余部分使用了 user_session。那么,我应该使用 student_session 创建一个新的 user_session 吗?然后注销学生?
或者有没有办法让设计允许学生创建,但作为用户基础模型登录?
谢谢你,安东尼
我已经看过类似的帖子,但无法完全得到我需要的答案。
我有一个用户模型并使用 STI 一个学生模型,它是一种用户。
当我创建一个新学生时,Devise 使用 student_session 登录该学生。问题是我的应用程序的其余部分使用了 user_session。那么,我应该使用 student_session 创建一个新的 user_session 吗?然后注销学生?
或者有没有办法让设计允许学生创建,但作为用户基础模型登录?
谢谢你,安东尼
查看这篇文章,看看它是否对您有帮助:
总结主要是做到以下几点:
配置/路由.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
为此,您必须创建一个自定义控制器。只是一个示例实现
#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