如果这与其他模型的电子邮件不同,如何验证电子邮件

How to validate an e-mail if this is not same as other model's e-mail

我有 2 个变量 "email" 和 "umail"。 umail 属于用户模型,电子邮件属于其他模型。我想验证 umail,其中的内容不应该与电子邮件相同。例如如果 umail: "abcd@xxx.com" 和 email: "abcd@xxx.com",则不应保存 umail 并应显示一条错误消息。

我尝试像

那样编写设计验证 "exclusion"
validates :subdomain, exclusion: { in: User.current.email,
   message: "%{value} is not allowed to use }
end

但是没有成功,所以我尝试了:

class Tecdb < ApplicationRecord
validates :umail, presence: true, if: :umail_not_allowed
def umail_not_allowed
  errors.add( umail: "is not allowed to use" ) if :umail == User.current.email
end

但也没有成功(意思是,即使 umail 和 email 相同,umail 也被保存了,没有显示任何错误消息)。

谁能告诉我这种验证的最佳编写方式是什么?

试试这个,

validate :check_email_and_umail

def check_email_and_umail
  errors.add(:umail, "can't be the same as email") if umail ==  User.current.email
end