是否可以根据两个不同的字段设置验证检查

时间:2011-09-15 09:04:47

标签: ruby-on-rails

class Foo < ActiveRecord::Base {
starts_at datetime;
ends_at datetime;
}

如何执行检查以验证ends_at是否在starts_at之后?

2 个答案:

答案 0 :(得分:3)

使用validate宏并传递自定义方法。

class Foo < ActiveRecord::Base

  validate :validate_timeline

  protected

    def validate_timeline
      unless ends_at > starts_at
        errors.add(:ends_at, "end date cannot precede start date")
      end
    end
end

答案 1 :(得分:1)

没有预定义的验证。
但是你可以perform custom validations

在这里,您可以这样做:

class Foo < ActiveRecord::Base
  validate :ends_after_starting

  private
  def ends_after_starting
    if starts_at > ends_at
      errors.add(:ends_at, "can't be before starts_at")
    end
  end
end