0

この本の内容: http: //ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#code :current_user_p

著者は次のことを行います。

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

  def current_user?(user)
    user == current_user
  end

私の質問は、比較がある場合、user == current_user; Railsは何を比較していますか?user == @current_user?またはuser.name==@ current_user.name?

次のようなものがあったらどうなるでしょう

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

ser == current_userはother_userを比較しますか?

4

2 に答える 2

2

current_userinはメソッドのuser == current_user呼び出しcurrent_userであり、rubyでは、メソッドは実行された最後のステートメントを返します。したがって、この例で@current_user は、と比較されていuserます。

メソッドに追加@other_userすると、ユーザーをと比較するcurrent_userという考え方は正しいです。user == current_user@other_user

于 2012-06-04T00:26:39.883 に答える
1

@current_user→インスタンス変数
current_user→メソッド

したがって、メソッドは(メソッド)の戻り値を引数current_user?と比較します。current_useruser

これはまったく同じコードですが、名前が少し異なります。

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

def is_current_user?(user)
  user == get_current_user
end
于 2012-06-04T00:30:54.417 に答える