validates_format_of кажется правильным для вас. документация говорит:
Проверяет, имеет ли значение указанный атрибут правильной формы, сопоставляя его с предоставленным регулярным выражением.
class Person < ActiveRecord::Base
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
end
Примечание: используйте \ A и \ Z для соответствия начала и конца строки, ^ и $ для начала / конца строки.
Необходимо указать регулярное выражение, иначе будет сгенерировано исключение.