ArgumentError:您需要提供至少一个验证:if

时间:2011-11-26 22:37:56

标签: ruby-on-rails validation ruby-on-rails-3.1

我有一个简单的模型

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

问题出在哪里?

3 个答案:

答案 0 :(得分:89)

您必须将validates更改为validate

答案 1 :(得分:42)

您忘记告诉validates您要如何验证:deadline。我认为你误解了:if的作用; :if => :deadline_in_future?选项意味着:

  

仅当:deadline方法返回真值时才验证deadline_in_future?

我怀疑你想确认截止日期是在未来:

validate :deadline_in_future?

Active Record Validations and Callbacks Guide中提供了更多详细信息。

答案 2 :(得分:1)

它表示您没有将任何验证传递给validates方法。例如,像validates :presence。你想验证什么?