我有一个活动记录模型,它包含属性:expiration_date.我如何验证它,使其在今天(当时的当前日期)之后?我对Rails和ruby完全陌生,我找不到一个类似的问题来回答这个问题?

我使用的是Rails 3.1.3和ruby 1.8.7

推荐答案

你的问题(几乎)准确地回答了in the Rails guides个.

下面是他们给出的示例代码.这个类验证日期是否在past,而你的问题是如何验证日期是否在future,但是调整它应该很容易:

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

Ruby-on-rails相关问答推荐

Rails文档的悲观锁定示例中的争用条件

一对多关联 counter_cache 在 Rails 中无法正确重新加载

Rails:has_many 通过不返回结果

Rails:序列化数据库中的对象?

Rails 将字符串与视图中的变量连接的最佳方法

如何在 to_json 中获取回形针图像的 url

如何在 Ruby 字符串中返回最后一个斜杠(/)之后的所有内容

FactoryGirl + Faker - 为数据库种子数据中的每个对象生成相同的数据

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A

rails 模型 has_many 本身

如何在 routes.rb 中使用 301 或 302 进行重定向

不带参数的 request.fullpath

在本地 Rails 开发环境中获取真实 IP 地址

Ruby gem 命名约定

错误未初始化的常量 AWS (NameError)

强参数需要多个

Heroku Postgres 错误:PGError:错误:关系组织不存在(ActiveRecord::StatementInvalid)

使用 heroku 和 namecheap 设置自定义域

在 GIT 中处理 Rails db/schema.rb 文件的正确方法是什么?

Ruby 更新后:测试失败,assets资源 未声明为在生产中预编译