在ruby on rails教程中使用self.current_user?

时间:2013-03-25 06:02:24

标签: ruby-on-rails

我正在尝试理解这段代码

module SessionsHelper

  def sign_in(user)
    cookies.permanent[:remember_token] = user.remember_token
    self.current_user = user
  end

  def current_user=(user)
    @current_user = user
  end

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

使用

self.current_user = user

是否会为SessionsController类创建一个名为current_user的变量(上面的模块属于SessionsController类)?

如果我使用

@current_user = user

而不是上面的代码,代码似乎完全相同。怎么样?!

非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

self.current_user = user只需调用方法current_user=(user),该方法只执行@current_user = user,因此只有@current_user = user才能正常工作。

答案 1 :(得分:0)

self.current_user = user,此表达式表示current_user是类Sessions中的方法(由模块SessionsHelper混合)而不是局部变量。 self代表类Sessions,因此这一行只是一个方法调用,与@current_user = usercurrent_user=(user)具有相同的效果。