class Ruby 中的验证器 rails

class Validator in Ruby on rails

我正在阅读 rails 指南。我正在尝试创建一个 class 验证器,但我在控制台

中收到以下错误消息

未初始化常量Product::GoodnessValidator

型号product.rb

class Product < ActiveRecord::Base
   validates_with GoodnessValidator

end

我在应用程序中创建了一个名为 validators 的文件夹,然后我创建了文件 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

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

你可以试试

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

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

尝试在 user.rb

顶部添加以下行
require 'validators/goodness_validator'