Все еще изучаю Rails.
На этот раз я вытаскиваю свои волосы.
При проверке модели я пытаюсь сделать модель действительной только для days_in_week 7 и 14.
У меня есть простая модель:
class ScheduleRotum < ApplicationRecord
attr_accessor :start_date, :end_date, :days_in_week
validate :trial_trial
validates :days_in_week, presence: true
validates :days_in_week, inclusion: { in: [ 7,14 ] }
validates :days_in_week, numericality: true
def initialize(start_date: '', end_date: '', days_in_week: 7)
@start_date = start_date
@end_date = end_date
@days_in_week = days_in_week
end
def trial_trial
unless @days_in_week == 7 or @days_in_week == 14
errors[:base] << 'Wrong number of dates'
end
end
end
Первые три валидации работают. Однако любая проверка, включая переменные для численности, приводит к ошибке (во всех перестановках, которые я пробовал):
2) ScheduleRotum#initialize days in week 15 is invalid
Failure/Error: expect(rotum).not_to be_valid
NoMethodError:
undefined method `[]' for nil:NilClass
А это код для спецификации:
require 'rails_helper'
RSpec.describe ScheduleRotum, type: :model do
context 'days in week' do
it 'is only valid as 7 or 14' do
rotum = ScheduleRotum.new days_in_week: 14
expect(rotum).to be_valid
expect(rotum.days_in_week).to eq 14
end
it '15 is invalid' do
rotum = ScheduleRotum.new days_in_week: 15
expect(rotum).not_to be_valid
end
end
end
Я не могу понять, почему nilClass создается с проверкой численности. Любое понимание?