nil: ошибка NilClass с проверкой численности - PullRequest
0 голосов
/ 30 июня 2018

Все еще изучаю 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 создается с проверкой численности. Любое понимание?

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