我有一个具有常用属性的用户模型,例如 email 和 hashed_password 等。我想编写一个验证来检查电子邮件地址的存在,但只有在
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,因为用户在数据库中确实有密码电子邮件地址。
我无法弄清楚如何将其限制在上述两种情况下。
任何人都可以帮忙吗?