У меня есть модель с двумя пользовательскими правилами проверки.Когда я удаляю эти правила, RSpec для проверки модели проходит.Но добавив те проверки в модель, RSpec не может пройти ранее пройденные. Как я могу решить эту ошибку , а также как мне написать RSpec для этих пользовательских проверок?
Файл моей модели leave.rb
class Leave < ApplicationRecord
scope :sorted_asc, lambda { order(id: :asc) }
validates :start_day, :end_day, :reason, :status, presence: true
validate :start_day_cant_be_past, :end_day_cant_be_less_than_start_day
enum category: { 'Sick': 0, 'Leave in Policy': 1, 'Out of Policy': 2 }
def start_day_cant_be_past
if start_day < Date.today
errors.add(:start_day, 'can not be in the past')
end
end
def end_day_cant_be_less_than_start_day
if end_day < start_day
errors.add(:end_day, 'can not be less than start day')
end
end
end
Мой RSpec-файл для модели leave_spec.rb
require 'rails_helper'
RSpec.describe Leave, type: :model do
it { should define_enum_for(:category).with(['Sick', 'Leave in Policy', 'Out of Policy']) }
it { is_expected.to validate_presence_of(:start_day) }
it { is_expected.to validate_presence_of(:end_day) }
it { is_expected.to validate_presence_of(:reason) }
it { is_expected.to validate_presence_of(:status) }
end
И ошибка, которую я получаю ...
Leave should validate that :start_day cannot be empty/falsy
Failure/Error: if start_day < Date.today
NoMethodError:
undefined method `<' for nil:NilClass