2012-06-04 77 views
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 

我的問題是當有一個比較,用戶== CURRENT_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什麼會hapen?

回答

2

user == current_user中的current_user是對current_user方法的調用,在ruby中,一個方法返回最後執行的語句。因此在該示例中,@current_user正在與user進行比較。

如果添加@other_usercurrent_user方法,那麼你在想,user == current_user會比較用戶@other_user正確。

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