における公式の電子メールの検証は私だけな[email protected]など公式の電子メールアドレスは、gmail.comやヤフーmail.comルビー
など、他の一般的な電子メールアドレスではなく、私のサービスにサインアップしたいことですがルビーの宝石は、この種の電子メールの検証を達成するために?そうでない場合、これをどうやって行うのですか?ここに示すように、あなたが適切なモデルにカスタム検証を書くことができ
における公式の電子メールの検証は私だけな[email protected]など公式の電子メールアドレスは、gmail.comやヤフーmail.comルビー
など、他の一般的な電子メールアドレスではなく、私のサービスにサインアップしたいことですがルビーの宝石は、この種の電子メールの検証を達成するために?そうでない場合、これをどうやって行うのですか?ここに示すように、あなたが適切なモデルにカスタム検証を書くことができ
: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
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
ただ、 '@'とドット '.'記号の後に控えのを、負の外観を追加します。 (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