Rails<%if signed_in? %GT;在Helper中找不到current_user

时间:2014-01-25 19:54:48

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

所以我正在使用rails和我的Signed_in?方法不起作用

<。>在.html.erb

<% if signed_in? %>

这是我的会话控制器

module SessionsHelper

def sign_in(user)
  remember_token = User.new_remember_token
  cookies.permanent[:remember_token] = remember_token
  user.update_attribute(:remember_token, User.encrypt(remember_token))
  self.current_user = user
end

def signed_in?

p "TRYING TO SIGN IN"
p !current_user.nil?
p current_user
p self.current_user
p @current_user
p self.current_user

!current_user.nil?

end

def current_user=(user)
  @current_user = user
end
def current_user?(user)
  user == current_user
end  
def current_user
  @current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end

我添加了一份印刷声明。

目前他们正在日志中返回

"TRYING TO SIGN IN"
false
nil
nil
nil
nil

知道为什么会这样,以及如何解决它?

感谢

1 个答案:

答案 0 :(得分:0)

存储在数据库中的remember_token已加密

user.update_attribute(:remember_token, User.encrypt(remember_token))

您正在尝试查找具有明文版本的用户,这就像尝试将“token_1”与“laskj5dflkasjdflkas4djf1la134232sdk2jf”进行比较

使用

@current_user ||= User.find_by_remember_token(User.encrypt(cookies[:remember_token]))

编辑:你有没有理由使用cookie而不是会话存储?