0
我正在为此类项目工作,其中一个要求是“对日期字段类型进行验证”。Ruby on Rails日期字段验证
例如,我所做的:
rails g scaffold Tasks id:primary_key description:string due:date
我会添加到模型什么,所以我可以确认的日期?
我试过多个不同的“解决方案”,似乎没有任何工作。
我正在为此类项目工作,其中一个要求是“对日期字段类型进行验证”。Ruby on Rails日期字段验证
例如,我所做的:
rails g scaffold Tasks id:primary_key description:string due:date
我会添加到模型什么,所以我可以确认的日期?
我试过多个不同的“解决方案”,似乎没有任何工作。
在您的模型中,您可以定义自定义方法来处理您的验证。
class Task < ActiveRecord::Base
validate :check_due_date
def check_due_date
# You can now check the "due" field here. For example, if you only want to allow due
# dates today and later:
if due < Date.today
errors.add(:due, "can only be today or later.")
end
end
end
您可以使用简单的“及时验证”插件:https://github.com/adzap/validates_timeliness/
然后使用以下语法:
class Task < ActiveRecord::Base
validates_date :due
end
除非插件是不允许的,在这种情况下,对方的回答(创建你自己的验证器)会更合适。
@Chuck:我不同意。如果你使用before_save,那么'task.valid?'可以返回true,即使它没有。在'validate'和'before_save'之间执行的唯一钩子是'after_validation',所以除非日期被'after_validation'方法混淆了,否则我不会担心。 – 2011-05-02 17:38:19