Ruby Rails 4自定义验证程序操作

Ruby Rails 4自定义验证程序操作,ruby,ruby-on-rails-4,rails-activerecord,Ruby,Ruby On Rails 4,Rails Activerecord,我正在rails指南()中进行自定义验证,我很难理解这里的内容。EmailValidator是如何使用的?它叫什么名字 class EmailValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i record.errors[attri

我正在rails指南()中进行自定义验证,我很难理解这里的内容。EmailValidator是如何使用的?它叫什么名字

class EmailValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
      record.errors[attribute] << (options[:message] || "is not an email")
    end
  end
end

class Person < ActiveRecord::Base
  validates :email, presence: true, email: true
end
class EmailValidatorrecord.errors[attribute]您执行的
验证传递散列的方法。当散列被传递时,该方法对其进行迭代,并为每个键实例化名称与给定键匹配的验证器。因此,如果您传递
presence:true
,它将实例化
PresenceValidator
的新实例,类似地
confirmation:true
将实例化
ConfirmationValidator
。如果值不是
true
,而是一个散列,它将被传递到验证器,并存储在实例变量
@options
中,该变量由
选项
读取器访问

我应该将EmailValidator代码放在哪里?你从哪里得到的描述?我想读更多关于它的内容。@Mulaiko-rails的美妙之处在于,你实际上可以阅读它的代码而不是文档。在这里,你可以阅读这两个内容:(注意,最后有一个小的
源代码:hide | GitHub
位。@Mulaiko-关于将验证器放在哪里-你需要将它们放在自动加载路径上的任何文件夹中。我个人将它们放在lib/validators中(我必须将其添加到application.rb的自动加载路径中),有些人更喜欢将它们放在应用程序/验证程序中。感谢您的回复。如果您能抽出时间帮我解答这个问题,可以吗: