首页 > 解决方案 > Ruby on Rails IF 语句验证检查

问题描述

所以我是 ruby​​ on rails 的新手,我遇到了这个 if 语句的问题,基本上我要检查的是 sql 数据库中的确认令牌是否存在用于登录的电子邮件地址。如果它确实反弹您的电子邮件未经过验证的消息。单击电子邮件中的链接后,它将删除数据库中的令牌。然后您可以继续登录。我不能让它为我的生活工作。除验证检查外,其他一切正常。谢谢您的帮助 !!!

 def authenticate(email, password)
   command = AuthenticateUser.call(email, password)
   user = User.find_by email:(email)
   confirmationtoken = 
   User.find_by_confirmation_token(params[:confirmation_token].to_s)
   if user.present? && confirmationtoken.present?
     render json: {error: 'Email not verified' }, status: :unauthorized
   elsif command.success?
     render json: {
       access_token: command.result,
       message: 'Login Successful'
     }
     else
       render json: { error: command.errors }, status: :unauthorized
     end
   end

标签: mysqlruby-on-railsrubyif-statement

解决方案


您可以简单地检查是否confirmation_token设置了用户的属性:

user = User.find_by(email: email)
if user && user.confirmation_token.present?
  # ...
elsif command.success?
  # ...
else
  # ...
end

user.confirmation_token.present?可以缩短为user.confirmation_token?


推荐阅读