我已经完成了Michael Hartl 的Ruby on Rails 教程。我知道一些关于实例变量、getter 和 setter 的基本概念。
登录方法在这里
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
现在我被困在这条线上
self.current_user = user
我找到了这个相关的问题,但我仍然不明白。
登录后,用户将被重定向到另一个页面,因此@current_user
将为零。Rails 只能从 cookie 或 session 中获取 current_user ,然后 set @current_user
,这样就不需要在当前请求中再次检查 cookie 或 session 了。
签出方法
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
self.current_user = nil
出于同样的原因,既然用户会被重定向到 root_url ,为什么我们需要呢?
这是getter和setter的代码
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end