问题
I have a simple model
class Task < ActiveRecord::Base
validates :deadline, :if => :deadline_in_future?
def deadline_in_future?
Date.today < self.deadline
end
end
All seems ok, but when I in my rails console
irb(main):001:0> Task.new
ArgumentError: You need to supply at least one validation
Where is the problem?
回答1:
You forgot to tell validates how you want to validate :deadline. I think you're misunderstanding what :if does; the :if => :deadline_in_future? option means:
Validate
:deadlineonly if thedeadline_in_future?method returns a true value.
I suspect that you want to validate that the deadline is in the future:
validate :deadline_in_future?
Further details are available in the Active Record Validations and Callbacks Guide.
回答2:
You must change validates to validate.
回答3:
It says you do not pass any validations to validates method. Like validates :presence, for example. What are you trying to validate?
来源:https://stackoverflow.com/questions/8282167/argumenterror-you-need-to-supply-at-least-one-validation-with-if