Есть ли способ проверить поле ввода, используя всего несколько строк кода?
Правильно, я не должен делать это при использовании пользовательской проверки.
Модель
class Search < ActiveRecord::Base
validates :email, :presence => true, :email => true
end
Validator
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
record.errors[attribute] << (options[:message] || "is not an email") unless
value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
end
Это то, что я действительно хочу сделать.
class Search < ActiveRecord::Base
validates :email, :email => lambda do |record, value|
record.errors[:email] << "invalid field" unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
end
end
Это возможно?