0

このようにメールをチェックするために、デフォルトの 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 => RFC822::EMAILが、私がそうすると、これが私が受け取るものです

NameError: uninitialized constant User::RFC822

私が欠けているものは何ですか?

4

1 に答える 1

3

Ruby on Rails プロジェクトの に gem を追加しましたGemfileか?

# Gemfile
gem 'rfc-822'

その後 bundle を実行し、サーバーを再起動します。次回は、定数RFC822が利用可能になるはずです。たとえば、 Ruby on Rails コンソールを開いてrails c実行すると、これを簡単にテストできます。正規表現が出力されるはずです。RFC822::EMAIL

于 2014-05-30T08:35:16.520 に答える