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