Rails validates_with error:: атрибуты не могут быть пустыми - PullRequest
2 голосов
/ 27 сентября 2011

Я пытаюсь использовать проверку validates_with для некоторого кода, который гарантирует, что два флага не являются одновременно истинными:

validates_with ConfirmationValidator

class ConfirmationValidator < ActiveModel::Validator
  def validate(record)
    if record.confirmed_good && record.confirmed_bad
      record.errors[:base] << "Record is both confirmed and confirmed_bad"
    end
  end
end

Но попытка использовать это приводит к следующей ошибке:

gems/activemodel-3.0.7/lib/active_model/validator.rb:142:in `initialize': :attributes cannot be blank (RuntimeError)

При просмотре этого файла создается впечатление, что это связано с некоторыми вариантами передачи, но я до сих пор не могу точно сказать, что происходит не так.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 07 декабря 2011

Как указывает @Gazler выше, ваша ошибка фактически связана с проблемой инициализации EveryValiator.Я столкнулся с той же проблемой.

Я использую rails 3.0.9, использую ActiveModel 3.0.9, а не тот стек, который вы, похоже, используете.Я только начинаю с пользовательских валидаторов.У меня есть ActiveModel :: EachValidator, не совсем то, что говорит ваш пример кода.EveryValidator нужны атрибуты, передаваемые в виде массива в параметрах validates_with, например,

class Something < ActiveRecord::Base
  validates_with GenericValidator, :attributes=>[:name, :image]
end
0 голосов
/ 11 ноября 2016

Это может произойти, если вы называете свой валидатор тем же именем, что и валидатор Rails. Пример с именем вашего валидатора:

PresenceValidator приведет к этому исключению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...