Подтвердить дату из отношения has_many-own_to - PullRequest
0 голосов
/ 04 ноября 2019

У меня проблема с проверкой даты в отношении has_many / assign_to. Я делаю сеть Netflix для изучения Rails, и я хочу проверить дату окончания эпизода не после даты окончания серии, которая принадлежит этому эпизоду.

Я пытался сделать что-то подобное (Я использую гем валидатора даты):

Серия (имя) имеет много эпизодов, и серия (имя, serie_id) принадлежит серии, теперь это мой код:

class Episode < ApplicationRecord
    belongs_to :serie
    #validates :expire_date, date: { before: Serie.find(:serie_id).expire_date } #This line explodes, that's what I want to fix
end

class Serie < ApplicationRecord
    has_many :episodes, dependent: :destroy
}
end

Спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

Просто напишите свой собственный метод проверки :

class Episode < ApplicationRecord
  belongs_to :serie

  validate :validate_expiry_date, 
    unless: ->{ serie.nil? } #  # this prevents a potential nil error

  private

  def validate_expiry_date
    if self.expire_date > self.serie.expiry_date
      errors.add(:expire_date, 'some sort of descriptive error message')
    end
  end
end

Не нужно гемов.

Проверка - это просто метод, который проверяет предикат и добавляет ошибку вобъект ошибок в случае проверки не пройден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...