【问题标题】:class Validator in Ruby on railsRuby on rails 中的类验证器
【发布时间】:2015-04-24 04:29:02
【问题描述】:

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

未初始化的常量 Product::GoodnessValidator

model 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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      尝试在您的 user.rb 顶部添加以下行

      require 'validators/goodness_validator' 
      

      【讨论】:

        【解决方案3】:

        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
        

        你可以试试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-08
          • 2011-05-09
          • 2011-07-04
          相关资源
          最近更新 更多