2017-07-20 10 views
0

における公式の電子メールの検証は私だけな[email protected]など公式の電子メールアドレスは、gmail.comやヤフーmail.comルビー

など、他の一般的な電子メールアドレスではなく、私のサービスにサインアップしたいことですがルビーの宝石は、この種の電子メールの検証を達成するために?そうでない場合、これをどうやって行うのですか?ここに示すように、あなたが適切なモデルにカスタム検証を書くことができ

+0

ただ、 '@'とドット '.'記号の後に控えのを、負の外観を追加します。 (html5 specから) '(?i)[a-z0-9!!$%& '* +/=?^ _ \' {|}〜 - ] + @(?gmail | yahoo)[a -z0-9](?:[a-z0-9 - ] {0,61} [a-z0-9])?(?:\ ?:[a-z0-9 - ] {0,61} [a-z0-9])?)* ' – sln

答えて

2

http://www.rails-dev.com/custom-validators-in-ruby-on-rails-4

次のように記事の基本的な考え方は次のとおりです。

あなたの検証メソッドを作成し、呼ばれる新しいディレクトリに置きます「バリ」

# app/validators/email_validator.rb 
class EmailValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    unless value =~ /\A([^@\s]+)[email protected]\z/i 
     record.errors[attribute] << (options[:message] || "wrong email address") 
    end 
    end 
end 

を(私はこの正規表現をテストしていない!それが正常に働いていることを確認するために、独自の電子メールドメインのパターンでhttp://rubular.com/とプラグのようなものを使用してください。)

その後、Railsは新しいバリデータディレクトリをロードするために知っていることを確認してください:

# config/application.rb 
config.autoload_paths += %W["#{config.root}/app/validators/"] 

そして、適切なモデルに新しい検証(電子メール)を追加:無料MailboxValidator Webサービスがあります

#MyModel.rb  
validates :my_email_field, email: true 
0

Rubyでリアルタイムの電子メールアドレス検証を実行できることを確認します。

https://github.com/MailboxValidator/mailboxvalidator-ruby

require "mailboxvalidator_ruby" 

apikey = "MY_API_KEY" 
email = "[email protected]" 

mbv = MailboxValidator::MBV.new() 
mbv.apikey = apikey 
mbv.query_single(email) 

if mbv.error != nil 
    puts "Error: #{mbv.error}" 
elsif mbv.result != nil 
    puts "email_address: #{mbv.result.email_address}" 
    puts "domain: #{mbv.result.domain}" 
    puts "is_free: #{mbv.result.is_free}" 
    puts "is_syntax: #{mbv.result.is_syntax}" 
    puts "is_domain: #{mbv.result.is_domain}" 
    puts "is_smtp: #{mbv.result.is_smtp}" 
    puts "is_verified: #{mbv.result.is_verified}" 
    puts "is_server_down: #{mbv.result.is_server_down}" 
    puts "is_greylisted: #{mbv.result.is_greylisted}" 
    puts "is_disposable: #{mbv.result.is_disposable}" 
    puts "is_suppressed: #{mbv.result.is_suppressed}" 
    puts "is_role: #{mbv.result.is_role}" 
    puts "is_high_risk: #{mbv.result.is_high_risk}" 
    puts "is_catchall: #{mbv.result.is_catchall}" 
    puts "mailboxvalidator_score: #{mbv.result.mailboxvalidator_score}" 
    puts "time_taken: #{mbv.result.time_taken}" 
    puts "status: #{mbv.result.status}" 
    puts "credits_available: #{mbv.result.credits_available}" 
    puts "error_code: #{mbv.result.error_code}" 
    puts "error_message: #{mbv.result.error_message}" 
end