ArgumentError: Вам необходимо предоставить хотя бы одну проверку: if - PullRequest
29 голосов
/ 27 ноября 2011

У меня есть простая модель

class Task < ActiveRecord::Base
  validates :deadline, :if => :deadline_in_future?

  def deadline_in_future?
    Date.today < self.deadline
  end
end

Все кажется нормальным, но когда я в моей консоли рельсов

irb(main):001:0> Task.new
ArgumentError: You need to supply at least one validation

В чем проблема?

Ответы [ 3 ]

91 голосов
/ 13 февраля 2012

Вы должны изменить validates на validate.

42 голосов
/ 27 ноября 2011

Вы забыли сообщить validates, как вы хотите проверить :deadline. Я думаю, вы неправильно понимаете, что делает :if; опция :if => :deadline_in_future? означает:

Проверять :deadline, только если метод deadline_in_future? возвращает истинное значение.

Я подозреваю, что вы хотите проверить, что крайний срок - в будущем:

validate :deadline_in_future?

Более подробная информация доступна в Руководстве по валидации и обратным вызовам активной записи .

1 голос
/ 27 ноября 2011

В нем говорится, что вы не проходите валидацию в методе validates. Например, validates :presence. Что вы пытаетесь проверить?

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