Подтвердить что ты не робот

ArgumentError: вам нужно предоставить хотя бы одну проверку: if

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

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

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

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

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

Где проблема?

4b9b3361

Ответ 1

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

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

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

validate :deadline_in_future?

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

Ответ 2

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

Ответ 3

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