【问题标题】:Rails 4 how to validate email against rfc822Rails 4 如何针对 rfc822 验证电子邮件
【发布时间】:2014-05-30 16:35:16
【问题描述】:

我正在使用默认的 Rails EmailValidator 来检查我的电子邮件

电子邮件验证器:

class EmailValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
      record.errors.add attribute, :invalid
    end
  end
end

和用户模型:

class User < ActiveRecord::Base
  validates :email, presence: true, uniqueness: true, email: true

但这并没有将西里尔文电子邮件视为无效。我知道我可以用这个http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html 更改正则表达式,但我想知道是否有最简单的方法,用 gem 或其他东西。我已经安装了 rfc-822 但现在我不知道如何使用它。此处描述https://github.com/dim/rfc-822/blob/master/lib/rfc822.rb#L27 说要将validates_format_of :email, :with =&gt; RFC822::EMAIL 添加到模型中,但是当我这样做时,这就是我收到的

NameError: uninitialized constant User::RFC822

我错过了什么?

【问题讨论】:

    标签: ruby-on-rails ruby email rfc822


    【解决方案1】:

    您是否将 gem 添加到 Ruby on Rails 项目的 Gemfile 中?

    # Gemfile
    gem 'rfc-822'
    

    之后运行 bundle 并重新启动您的服务器。下一次,常量RFC822 应该可用。例如,您可以通过使用 rails c 打开 Ruby on Rails 控制台然后运行 ​​RFC822::EMAIL 来轻松测试这一点,这应该会打印一些正则表达式。

    【讨论】:

    • 我没有改变 Gemfile... tnx
    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 2023-03-29
    • 2013-08-24
    • 2011-01-26
    • 1970-01-01
    • 2016-09-22
    • 2013-01-24
    • 2021-11-21
    相关资源
    最近更新 更多