Rails 4如何验证针对rfc822的电子邮件

时间:2014-05-30 08:21:46

标签: ruby-on-rails ruby email rfc822

我正在使用默认导轨EmailValidator查看我的电子邮件

为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

和USer模型:

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

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

NameError: uninitialized constant User::RFC822

我缺少什么?

1 个答案:

答案 0 :(得分:3)

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

# Gemfile
gem 'rfc-822'

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