Можно ли установить проверки проверки на основе двух несопоставимых полей - PullRequest
2 голосов
/ 15 сентября 2011
class Foo < ActiveRecord::Base {
starts_at datetime;
ends_at datetime;
}

Как принудительно установить проверку, которая проверяет, стоит ли конец__ после пункта_запуска?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Используйте макрос 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 голос
/ 15 сентября 2011

Для этого нет предопределенных проверок.
Однако вы можете выполнить пользовательские проверки

Здесь вы можете сделать что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...