ruby-on-rails – Rails验证用户电子邮件 – 只希望它在用户注册或更新电子邮件地址时进行验证

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails验证用户电子邮件 – 只希望它在用户注册或更新电子邮件地址时进行验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用户模型,具有通常的属性,如电子邮件和hashed_pa​​ssword等.我想写一个验证,检查电子邮件地址的存在,但只有当

1)数据库中没有一个存储在该对象中(即这是新用户注册)

2)用户正在尝试更新其电子邮件地址.

我目前的验证

validates_presence_of :email
  validates_presence_of :email_confirmation

  validates_confirmation_of :email

显然阻止我更新任何属性.我想到了使用

validates_presence_of:email,:if:email_validation_required

def email_validation_required?
self.email.blank?
end

但是,这不会帮助方案2,因为它将返回true,因为用户在db中有一个密码电子邮件地址.

我无法解决如何将其限制在上述的两个场景中.

谁能帮忙?

解决方法

我认为EmFi正在进行中.但我不认为validates_presence_of:电子邮件应该控制你.电子邮件应该始终存在 – 如果以空格形式显示,参数不会与用户的保存混淆.如果以表单输入,即使更新,它应该有一个电子邮件确认一起骑.

试试这个:

validates_presence_of :email
validates_presence_of :email_confirmation,:if => :email_changed?

validates_confirmation_of :email

猜你在找的Ruby相关文章