2015-04-24 84 views
0

我正在阅读导轨指南。我想创建一个类验证,但我在控制台收到以下错误消息Ruby on rails上的类验证器

未初始化不断的产品:: GoodnessValidator

模型product.rb

class Product < ActiveRecord::Base 
    validates_with GoodnessValidator 

end 

我创建的应用程序称为验证一个文件夹里面然后我创建文件goodness_validator.rb

class GoodnessValidator < ActiveModel::Validator 
     def validate(record) 
     if record.amount == 12 
      record.errors[:base] << "The amount musn't be 12" 
     end 
     end 
    end 

回答

2

Rails仅加载app目录中的特定文件夹(默认文件夹)。如果你想添加一个新的子文件夹(如validators)和你想的Rails从该文件夹中加载的文件,那么你必须配置通过添加以下行到您的config/application.rb:通过添加以下行

# in config/application.rb 
config.autoload_paths += %W(#{config.root}/app/validators) 
+1

谢谢spickermann。我添加了这行代码,它工作 –

1

Ruby是按顺序加载代码,所以你应该把GoodnessValidator在前面。

class GoodnessValidator < ActiveModel::Validator 
     def validate(record) 
     if record.amount == 12 
      record.errors[:base] << "The amount musn't be 12" 
     end 
     end 
end 

class Product < ActiveRecord::Base 
    validates_with GoodnessValidator 

end 

您可以试一试。

2

尝试在你的顶部user.rb

require 'validators/goodness_validator'