Vous pouvez écrire une validation personnalisée dans le modèle approprié comme indiqué ici: http://www.rails-dev.com/custom-validators-in-ruby-on-rails-4
L'idée de base dans l'article est la suivante:
Faites votre méthode de validation, et le mettre dans un nouveau répertoire appelé « validateurs »
# 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
(je ne l'ai pas testé cette regex! S'il vous plaît utiliser quelque chose comme http://rubular.com/ et branchez votre propre modèle de domaine e-mail pour vous assurer qu'il fonctionne correctement.)
Ensuite, assurez-vous que Rails sait pour charger le nouveau répertoire validateurs:
# config/application.rb
config.autoload_paths += %W["#{config.root}/app/validators/"]
Ensuite, ajoutez la nouvelle validation (e-mail) au modèle approprié:
#MyModel.rb
validates :my_email_field, email: true
Il suffit d'ajouter un regard négatif avant de l'après '@' 'et le point .' symboles. Comme (à partir de la spécification html5) '(? I) [a-z0-9.! # $% & '* +/=?^_ \' {|} ~ -] + @ (?! gmail | yahoo) [un -z0-9] (?: [a-z0-9 -] {0,61} [a-z0-9])? (?: \. (?! gmail | yahoo) [a-z0-9] (?: [a-z0-9 -] {0,61} [a-z0-9])?) * ' – sln