Вы можете использовать модуль TMail :: Address для проверки электронной почты как , показанное здесь . Пользовательские проверки могут быть добавлены с помощью метода validate
.
validate :check_email_addresses
def check_email_addresses
email_addresses.split(/,\s*/).each do |email|
TMail::Address.parse(email)
end
rescue TMail::SyntaxError
errors.add(:email_addresses, "are not valid")
end
Обновление: Модуль TMail :: Address кажется слишком слабым в отношении того, что считается действительным адресом электронной почты (см. Комментарии ниже), поэтому вместо этого вы можете использовать регулярное выражение.
validate :check_email_addresses
def check_email_addresses
email_addresses.split(/,\s*/).each do |email|
unless email =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
errors.add(:email_addresses, "are invalid due to #{email}")
end
end
end
Существует множество решений с регулярными выражениями для проверки адреса электронной почты. Подробнее см. на этой странице .