我的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/"]
当我将验证器放在与产品型号相同的文件中时,它完美地工作。但在分离文件中它失败了。有没有我错过的步骤?请指教。感谢。
答案 0 :(得分:1)
尝试继承ActiveModel::EachValidator
而不是ActiveModel::Validator
:
class TagsSizeValidator < ActiveModel::EachValidator
...
此外,您不必将其添加到Rails 4.1中的autoload_paths
。