Ruby Hart的Ruby on Rails教程 - 第9章 - Ruby 2.3

时间:2011-01-19 14:54:35

标签: ruby-on-rails

我正在关注迈克尔·哈特尔的教程,我在第9章陷入困境。

我需要这个功能才能工作:

def signed_in?     !当前用户   端

但此函数始终返回false 即使我记录了 对不起这个简单的问题我很抱歉 但我是一个乞丐,也花了很长时间 时间试图搞清楚。 我正在使用ruby 1.8.7和rails 2.3.8

先谢谢!

3 个答案:

答案 0 :(得分:1)

我怀疑代码应该是

def signed_in?
  current_user
end

!的调用前放置current_user可以读作“如果不是current_user,则返回true”。

SessionsHelper内的代码有拼写错误。 :remember_token Cookie不会在sign_in方法中保存。它应该是:

def sign_in(user)
  user.remember_me!
  cookies[:remember_token] = { :value => user.remember_token,
                               :expires => 20.years.from_now.utc }
  self.current_user = user
end

不是:remember_toker

答案 1 :(得分:1)

你必须添加一个.nil?像current_user这样:

def signed_in?
    !current_user.nil?
end

答案 2 :(得分:0)

我有类似的问题,并决定倒退。

1)def signed_in? !current_user.nil? end。所以我找了宣言&与登录相关联的current_user的定义

2)这里:def sign_in(user) cookies.permanent.signed[:remember_token] = [user.id, user.salt] self.current_user = user end。对我来说,令牌拼写错误并修复了它。