log_in(用户)与log_in用户相同吗?

时间:2017-04-24 13:49:01

标签: ruby-on-rails railstutorial.org

做Hartl的Rails教程,chapter 8.2.1

我们定义:

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)?它们是等效的语法吗?感谢

1 个答案:

答案 0 :(得分:3)

作为ruby语法糖的一部分,你可以在方法调用上删除括号

例如,假设您有一个接收哈希的方法

您可以通过以下任何方式调用它:

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

何时使用哪个?取决于。

如果要嵌套方法调用,最好是详细。如果你需要传递多个哈希值,那么你需要使用{}括号告诉ruby它们的边界。