@OrdeO
just......newbie

Как валидировать временной промежуток в рельсовой модели?

Есть простое rails приложение, есть модель пользователя User, у пользователя есть поле date_of_birth
Как валидировать это поле в модели, что б проверять что date_of_birth находится в промежутке от 01.01.1900 до сегодняшнего дня включительно, при том что этого поля может и не быть совсем, но если есть, то подходит под этот рендж.
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
etspring
@etspring
Начитанное быдло
class User < ApplicationRecord
  validates_with UserBirthZalupaValidator
end


class UserBirthZalupaValidator < ActiveModel::Validator
  def validate(record)
    begin
      birth = Date.parse(record.birth_date.to_s)
      record.errors.add(:base, "zlpa") unless birth.between?(start_date, end_date)
    rescue StandardError => e
      Rails.logger.error("Full zlpa: #{e.inspect}")
    end
  end

  def start_date
    Date.new(1900,1,1)
  end

  def end_date
    Time.zone.today
  end
end

Примерно так
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы