簡體   English   中英

找不到ActiveModel自定義EachValidator

[英]ActiveModel custom EachValidator not found

我的EachValidator無法在Rails 4.1.5上運行。

我的Product型號:

class Product < ActiveRecord::Base
  has_many :tags

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

我的驗證器,我將其放在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/"]

當我將驗證器與產品模型放在同一文件中時,它可以完美地工作。 但是在單獨的文件中失敗了。 我錯過了任何步驟嗎? 請指教。 謝謝。

嘗試從ActiveModel::EachValidator而不是ActiveModel::Validator繼承:

class TagsSizeValidator < ActiveModel::EachValidator
...

另外,您不必在Rails 4.1中將其添加到autoload_paths中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM