2017-04-24 34 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的边界。

相关问题