我需要验证“日期”,看看输入的日期是否在过去的一年内。我正在这样做,
validates :date, lambda {Date.today - 1.year.ago}
上面的代码有什么问题?
rqdpfwrv1#
你的验证必须返回一个Boolean值。像这样的验证就可以完成这项工作。
Boolean
validate :date_must_be_in_past_year def date_must_be_in_past_year if date.present? && date <= 1.year.ago errors.add(:date, "date must be within the past year") end end
sxpgvts32#
你可以使用Validate Timeliness gem,它是一个用于ActiveModel和Rails的日期和时间验证插件。
Gemfile:
gem 'validates_timeliness', '~> 3.0'
运行bundler并生成gem初始化器:
$ bundle install $ rails generate validates_timeliness:install
然后,在您的模型中使用它如下:
validates_date :date, :after => lambda { 1.year.ago }
2条答案
按热度按时间rqdpfwrv1#
你的验证必须返回一个
Boolean
值。像这样的验证就可以完成这项工作。sxpgvts32#
你可以使用Validate Timeliness gem,它是一个用于ActiveModel和Rails的日期和时间验证插件。
Gemfile:
运行bundler并生成gem初始化器:
然后,在您的模型中使用它如下: