rails3不会在lib中加载我的验证器

gil*_*las 10 ruby-on-rails ruby-on-rails-3

我将EmailValidator放在lib/validators/email_validator中并且它不起作用(我将root/lib放在load_path中)

这是代码..我把模块验证器中的类作为父文件夹名称

class Validators::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
Run Code Online (Sandbox Code Playgroud)

我收到错误未知验证器:'email'

Dou*_*rer 14

您有两种选择:

  1. 将自定义验证器放在下面config/initializers.
  2. 或者添加lib/validators到自动加载路径中config/application.rb.

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

就个人而言,我会选择第二个选项作为lib/validators良好的封装.


lul*_*ala 10

由于您将自定义验证器放在其中Validators::,因此lib/validators您还必须使用该命名空间引用它.

validates :email, presence: true, :'validators/email' => true
Run Code Online (Sandbox Code Playgroud)