我正在阅读导轨指南。我正在尝试创建一个类验证器,但我在控制台中收到以下错误消息
未初始化常量 产品::善良验证器
模型产品.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
你可以试一试。