用户在设计中登录时自定义验证

时间:2016-08-25 12:59:23

标签: ruby-on-rails ruby-on-rails-4 devise

老实说,我知道如何通过devise.en.yml

更改设计的错误消息

我有一个使用Devise进行身份验证的网站。

登录时如果电子邮件和密码为空则会给我错误

  

电子邮件或密码无效。

但我想为不同情况的用户显示不同的错误消息:

喜欢, 如果电子邮件字段为空且密码存在而不是显示

  

电子邮件不能为空。

否则,如果密码字段为空并且电子邮件存在而不是显示

  

密码不能为空。

其他密码和电子邮件未经身份验证而不是显示

  

无效的电子邮件或密码

目前正在运作。

我不想从我的模态中移除:validatable

我累了validates :email, :presence => true, :email => true

来自here

但是当我注册时,它会显示2个错误

  

电子邮件不能为空。

设计的一个错误,另一个是模态错误。

请告诉我如何仅为用户登录进行此验证。

提前谢谢你。 :)

2 个答案:

答案 0 :(得分:0)

请更喜欢这个  Link

如果用户正在登录,您可以在config/locales.下的devise.en.yml中编辑所有错误消息

答案 1 :(得分:0)

在您的设计会话控制器的创建操作中尝试此操作。

def create
  user = User.find_by(email: params[:user][:email])
  if user
    if user.valid_password?(params[:user][:password]) 
      sign_in_and_redirect user
    else
      flash[:error] =  "Please enter the valid password."
    end
  end
end