Rails模型有效(不包含子字符串)



是否有一种简单的方法来验证未包含子字符串的字段。我想要一个不包含" 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

相关内容

最新更新