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比较?用户 == @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_userinuser == current_user是对方法的调用,current_user在 ruby​​ 中,方法返回最后执行的语句。因此,在示例中,@current_user 正在与 进行比较user

如果您添加@other_user到该current_user方法,那么您认为user == current_user将 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 回答