我想在用户根据User表中的某个字段登录时设置会话变量。如果我不需要,我不想创建自定义Devise控制器。有办法吗?或者我必须去自定义控制器路线?
答案 0 :(得分:12)
有一个回调after_sign_in_path_for,您可以将其添加到ApplicationController
protected
def after_sign_in_path_for(resource)
session[:domain_prefix] = current_user.domain_prefix
user_path(resource)
end
不要忘记在方法的最后一行返回路径,否则回调会将请求重定向到session[:domain_prefix]
的内容
答案 1 :(得分:5)
这个怎么样:
我要看的第一个资源是http://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in。另外,请查看How to redirect to a specific page on successful sign up using rails devise gem?以获取一些想法。
您可以执行以下操作:
def after_sign_in_path_for(resource_or_scope)
session[:account_type] = current_user.account_type
end
您可以在ApplicationController或自定义RegistrationsController中实现此方法。