2015-04-24 79 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'