我对 Ruby 语言和 Ruby on Rails 非常陌生,所以我不完全确定如何表达我的问题(并且可能会使用不正确的术语)。以下代码不起作用
@user = User.find_by email: params[:session][:email]
if @user.authenticate(params[:session][:password])
# Signin @user
else
# Render failed Signin
end
我收到一个错误,即没有为 nil:Nilclass 定义方法验证,但以下代码可以正常工作:
@user = User.find_by email: params[:session][:email]
if @user && @user.authenticate(params[:session][:password])
# Signin @user
else
# Render failed Signin
end
我不明白为什么第一个代码块不起作用。当我定义@user 时,User.find_by 方法不会运行并设置@user 的值吗?还是只有在程序中调用时才设置变量值?
编辑:删除不必要的括号。