在Devise登录后设置user_session变量

时间:2015-05-13 06:40:00

标签: ruby-on-rails devise

我有这个工作然后几个月后回到我的应用程序现在它已经坏了。我确信它在某个地方是一个微妙的变化,或者我错过了一些明显的东西。

在我的应用程序控制器中,我有这个:

  def after_sign_in_path_for(resource)

    user_session["company_id"] = current_user.default_company_id
    cookies[:login] = { :value => current_user.email, :expires => Time.now + 2.weeks}
    dashboard_path
  end

如果我稍后致电user_session["company_id"] nilcurrent_user.default_company_id有效)。

如果我在调用user_session["company_id"] = current_user.default_company_id之前的代码中设置user_session["company_id"]以获取其有效的值。

1 个答案:

答案 0 :(得分:1)

您可以在应用程序控制器中调用before_filter的方法中设置company_id,如下所示

before_filter :set_company_id

def set_company_id
    session["company_id"] = session["company_id"] || current_user.default_company_id if current_user
end

在after_sign_in_path_for方法

中删除设置company_id
def after_sign_in_path_for(resource)
    cookies[:login] = { :value => current_user.email, :expires => Time.now + 2.weeks}
    dashboard_path
end