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 (上記のモジュールは SessionsController クラスに属します) の current_user という名前の変数を作成しますか?

私が使用する場合

@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(モジュールによる mixin ) であることを示します。SessionsHelperそこにある self は classSessionsを表すので、この行は単なるメソッド呼び出しであり、@current_user = userorと同じ効果がありcurrent_user=(user)ます。

于 2015-05-07T06:54:15.763 に答える