登录时在设计中设置会话变量

时间:2011-09-14 20:59:44

标签: ruby-on-rails ruby-on-rails-3 devise

我想在用户根据User表中的某个字段登录时设置会话变量。如果我不需要,我不想创建自定义Devise控制器。有办法吗?或者我必须去自定义控制器路线?

2 个答案:

答案 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中实现此方法。