设计 - 无法在Application Controller中获取current_user

时间:2014-01-11 03:04:41

标签: ruby-on-rails ruby devise

我正在为我的应用程序使用Devise(Ruby 2.0,Rails 4)。一切运行良好(注册,登录等)。但是当我想在ApplicationController中获取current_user时,它总是返回nil(已经登录)。这是我的代码

class ApplicationController < ActionController::Base
  before_action :set_locale

  def set_locale

    locale = detect_location
    if current_user && current_user.locale.blank?
      current_user.locale = locale
      current_user.save
    end

    I18n.locale = locale
  end

end

任何帮助?

谢谢,

2 个答案:

答案 0 :(得分:0)

您是否在其他控制器上进行身份验证而不是此身份验证?

e.g。在其他控制器中使用before_filter :authenticate_user!

答案 1 :(得分:0)

def set_locale
  I18n.locale =
    unless user_signed_in?
      params[:locale] || 'en'
    else
      current_user[:locale] || 'en'
    end
end

  1. 在用户表中,有一个名为“locale”的字段。
  2. 注意到user_signed_in?是Devise Gem的辅助方法