18

Railsアプリにメールバリデーターを追加しようとしています。次のファイルを作成しました/lib/validators/email_validator.rb

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

application.rbに、次の行を追加しました。

config.autoload_paths << "#{config.root}/lib/validators"

そして、これが私のユーザーモデルです。

class User < ActiveRecord::Base
  attr_accessible :email, :password,:name
  validates :email, :presence => true, :uniqueness => true, :email => true  
end

サーバーを起動したい場合、エラーが発生しました:

Unknown validator: 'EmailValidator' (ArgumentError)

誰かが私がこの問題を解決する方法を考えていますか?

4

3 に答える 3

12

カスタムバリデーターを app/validators に配置すると、 config/application.rb ファイルを変更する必要なく自動的にロードされます。

リソース: Rails 3 カスタム バリデータはどこに保存する必要がありますか? (2番目の答え)

于 2013-03-07T22:08:12.687 に答える
5

このエラーは、Rails が検証ファイルの前にモデル ファイルをロードするために発生します。

モデル ファイルの先頭で検証ファイルを手動で要求してみてください

require_dependency 'validators/email_validator.rb'
于 2014-06-20T11:03:20.767 に答える