我有一个简单的模型
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
问题出在哪里?
答案 0 :(得分:89)
您必须将validates
更改为validate
。
答案 1 :(得分:42)
您忘记告诉validates
您要如何验证:deadline
。我认为你误解了:if
的作用; :if => :deadline_in_future?
选项意味着:
仅当
:deadline
方法返回真值时才验证deadline_in_future?
。
我怀疑你想确认截止日期是在未来:
validate :deadline_in_future?
答案 2 :(得分:1)
它表示您没有将任何验证传递给validates
方法。例如,像validates :presence
。你想验证什么?