Rails 6.1.7.3如何仅验证未来活动的日期?
在Rails 6.1中实现日期大于今日的验证(替代Rails 7的ComparisonValidator)
Rails 7里可以直接用ComparisonValidator简化日期验证逻辑,但当前项目基于Rails 6.1.7.3,无法使用该特性。针对Concerts模型的date属性,要验证用户输入的日期不能是过去或当天的日期,以下是最终实现方案:
class Concert < ApplicationRecord validates :date, presence: true validate :date_must_be_future private def date_must_be_future return if date.blank? errors.add(:date, "必须是未来的日期") if date <= Date.today end end
说明
- 保留
presence: true确保日期字段不为空 - 自定义
date_must_be_future验证方法,检查日期是否小于等于今日,不符合则添加对应错误提示 - 该方案完全兼容Rails 6.1版本,实现了与Rails 7中
comparison: {greater_than: Date.today}一致的验证逻辑
内容的提问来源于stack exchange,提问作者Maj Aliju
相关产品推荐
相关产品推荐

