找不到ActiveModel自定义EachValidator

时间:2014-08-25 03:58:37

标签: ruby-on-rails rails-activerecord

我的EveryValidator无法在Rails 4.1.5上运行。

我的Product型号:

class Product < ActiveRecord::Base
  has_many :tags

  validates :tags, tags_size: {minimum: 1, maximum: 10}
end

My Validator,我把它放在app / validators / tags_size_validator.rb

class TagsSizeValidator < ActiveModel::Validator

  def validate_each(record, attribute, value)
    if value.size < options[:maximum]
      record.errors[attribute] << (options[:message] || "must have at most #{options[:maximum]} tags.")
    end

    if value.size > options[:minimum]
      record.errors[attribute] << (options[:message] || "must have at lease #{options[:minimum]} tags.")
    end
  end
end

我已经在application.rb中自动加载了

config.autoload_paths += %W["#{Rails.root}/app/validators/"]

当我将验证器放在与产品型号相同的文件中时,它完美地工作。但在分离文件中它失败了。有没有我错过的步骤?请指教。感谢。

1 个答案:

答案 0 :(得分:1)

尝试继承ActiveModel::EachValidator而不是ActiveModel::Validator

class TagsSizeValidator < ActiveModel::EachValidator
...

此外,您不必将其添加到Rails 4.1中的autoload_paths