在这本书中: 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?
答案 0 :(得分:2)
current_user
中的user == current_user
是对current_user
方法的调用,而在ruby中,方法返回最后执行的语句。因此,在示例中,@current_user
与user
进行了比较。
如果您将@other_user
添加到current_user
方法,那么您认为user == current_user
会将用户与@other_user
进行比较是正确的。
答案 1 :(得分:1)
@current_user
→实例变量
current_user
→方法
因此current_user?
方法将current_user
(方法)的返回值与user
参数进行比较。
这是完全相同的代码,但名称略有不同:
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