Techioz Blog

Railsで日付が今日以降であることを検証するにはどうすればよいですか?

概要

属性 expiry_date を含むアクティブ レコード モデルがあります。今日(その時点での現在の日付)以降であることを検証するにはどうすればよいですか?私はRailsとRubyにまったく慣れていませんが、これに正確に答える同様の質問を見つけることができませんでした。

Rails 3.1.3 と Ruby 1.8.7 を使用しています

解決策

あなたの質問は、Rails ガイドで (ほぼ) 正確に答えられています。

彼らが提供するサンプルコードは次のとおりです。このクラスは日付が過去であることを検証しますが、あなたの質問は日付が未来であることを検証する方法ですが、それを適応させるのは非常に簡単です。

class Invoice < ActiveRecord::Base
  validate :expiration_date_cannot_be_in_the_past

  def expiration_date_cannot_be_in_the_past
    if expiration_date.present? && expiration_date < Date.today
      errors.add(:expiration_date, "can't be in the past")
    end
  end    
end