Answers:
我认为这是一种更好,更优雅的方法:
user = User.find_by_email(params[:user][:email])
user.valid_password?(params[:user][:password])
从用户实例生成摘要的另一种方法是给我提供受保护的方法错误。
Devise为您提供了内置方法来验证用户密码:
user = User.find_for_authentication(email: params[:user][:email])
user.valid_password?(params[:user][:password])
对于具有Strong Params的Rails 4+,您可以执行以下操作:
def login
user = User.find_for_authentication(email: login_params[:email])
if user.valid_password?(login_params[:password])
user.remember_me = login_params[:remember_me]
sign_in_and_redirect(user, event: :authentication)
end
end
private
def login_params
params.require(:user).permit(:email, :password, :remember_me)
end
我认为更好的是
valid_password = User.find_by_email(params[:user][:email]).valid_password?(params[:user][:password])