2017-04-24 33 views
0

做哈特爾的Rails教程,chapter 8.2.1是log_in(用戶)與log_in用戶相同嗎?

我們定義:

def log_in(user) 
    session[:user_id] = user_id 
end 

然後我們調用log_in方法控制器:

def create 
    user = User.find_by(email: params[:session][:email].downcase) 
    if user && user.authenticate(params[:session][:password]) 
    log_in user 
    redirect_to user 
    else 
    flash.now[:danger] = 'Invalid email/password combination' 
    render 'new' 
    end 
end 

爲什麼我們寫log_in user,而不是在控制器log_in(user)?它們是否是等價的語法?謝謝

回答

3

是的。

由於Ruby的語法糖的一部分,你可以砸方法括號調用

例如可以說你有一個發生在哈希方法

你可以稱它爲以下任一方式:

method_name({param1: 1, param2: 2}) 
method_name(param1: 1, param2: 2) 
method_name param1: 1, param2: 2 

什麼時候用哪個?依靠。

如果你想嵌套方法調用,最好是冗長的。如果你需要傳遞多個哈希,那麼你需要通過使用{}括號來告訴Ruby的邊界。

相關問題