如何在ruby/rails中检查过去一年的日期的有效性

nbnkbykc  于 2023-03-22  发布在  Ruby
关注(0)|答案(2)|浏览(160)

我需要验证“日期”,看看输入的日期是否在过去的一年内。我正在这样做,

validates :date, lambda {Date.today - 1.year.ago}

上面的代码有什么问题?

rqdpfwrv

rqdpfwrv1#

你的验证必须返回一个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
sxpgvts3

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 }

相关问题