是否有一种简单的方法来验证未包含子字符串的字段。我想要一个不包含" yahoo.com"的电子邮件字段。如果它包含" yahoo.com",我会借来回到错误消息。
无需添加自定义验证器,只需使用rails varryates_format_for
validates_format_of :email, without: /yahoo.com/i, message: "your custom message"
请参阅文档http://apidock.com/rails/activemodel/validations/helpermethods/validates_format_of
正如评论所建议的 - 构建自定义验证器
require 'active_model'
class NotYahooEmailValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
if value.include? "yahoo.com"
object.errors[attribute] << (options[:message] || "is a yahoo.com email address")
end
end
end
您将使用它如下:
class User < ActiveRecord::Base
validates :email, :presence => true, :not_yahoo_email => true
end