class Validator in Ruby on rails



我正在阅读导轨指南。我正在尝试创建一个类验证器,但我在控制台中收到以下错误消息

未初始化常量 产品::善良验证器

模型产品.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

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' 

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

你可以试一试。

最新更新