0

我试图理解这段代码

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

而不是上面的行,代码似乎以完全相同的方式工作。如何?!

非常感谢您的时间。

4

2 回答 2

0

self.current_user = user只需调用该方法current_user=(user),而该方法只做@current_user = user,所以如果你这样做,它的工作原理是一样的@current_user = user

于 2013-03-25T06:06:10.303 回答
0

self.current_user = user,这个表达式是表示current_user是类中的方法Sessions(按模块混合SessionsHelper)而不是局部变量。那里的 self 代表 class Sessions,所以这一行只是一个方法调用,与@current_user = useror效果相同current_user=(user)

于 2015-05-07T06:54:15.763 回答