【问题标题】:How to validate an e-mail if this is not same as other model's e-mail如果电子邮件与其他型号的电子邮件不同,如何验证电子邮件
【发布时间】:2019-10-15 01:14:15
【问题描述】:

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

我尝试编写设计验证“排除”之类的

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 也被保存了,没有显示任何错误信息)。

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

【问题讨论】:

    标签: ruby-on-rails validation devise


    【解决方案1】:

    试试这个,

    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
    

    【讨论】:

    • 感谢您的回答。你的意思是,我需要修改代码validates :umail, presence: true, :umail_not_allowed 吗?这显示了一个语法错误
    • 确保你写的是'validate'而不是'validates'。你也可以显示语法错误
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2017-02-05
    • 2019-03-09
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多