этот метод не работает в Ruby on Rails

Я создаю класс, используя таблицу ActiveRecord в качестве потока данных с 46 элементами внутри. Я не понимаю, в чем здесь проблема, похоже, я не могу извлечь элементы в новый массив?

Это мой результат Rspec:

Неудачи:

  1) TrainSearch :rows has 46 items
     Failure/Error: expect(checker.data).to eq(46)

       expected: 46
            got: #<ActiveRecord::Relation []>

       (compared using ==)

Это мой код:

class TrainSearch

    attr_reader :data

    def initialize
      @data = Timetable.all
    end

    def rows
      @rows ||= @data.map {|row| Row.new(row)}
    end
end

ВОТ МОЙ КОД: файл

Спасибо за ваше время!


person YoniGeek    schedule 01.08.2014    source источник
comment
Разве вы не сравниваете массив с числом? Разве у вас не должно быть expect(checker.data.size).to eq(46)   -  person j-dexx    schedule 01.08.2014
comment
@Baloo Привет! если я сделаю так, как вы предложили, я получу это: 1) TrainSearch: rows имеет 46 элементов. Ошибка/ошибка: ожидаем (checker.data.size).   -  person YoniGeek    schedule 01.08.2014


Ответы (1)


То, на что Балу указал в комментариях, похоже на правду. Ваше сообщение об ошибке явно говорит вам, что его сравнение.

Не видя самого кода, его немного сложнее интерпретировать, но вот.

Вы запрашиваете некоторую запись в базе данных (строки?) и ожидаете, что их будет 46. Ваш запрос возвращает отношение ActiveRecord (массив всех строк). Чтобы выяснить, сколько строк вам нужно сделать:

checker.data.count

Кажется, у вас также есть другая ошибка, которую я не могу отследить по предоставленной информации. Ваш запрос возвращает пустой массив, так что счетчик будет равен 0 и все равно не удастся.

person jkeuhlen    schedule 01.08.2014
comment
@jjkeuhlen это правильно, я тоже получаю ноль, но почему? БД расписания заполнена obj:s - person YoniGeek; 01.08.2014
comment
Какая база данных заполнена? Может ли ваша проблема заключаться в том, что вы пытаетесь протестировать данные, созданные в базе данных разработки, а не в тестовой базе данных (это отдельные базы данных)? - person jkeuhlen; 01.08.2014
comment
эй, это правильно, мои данные создаются в разделе dev.section. Теперь я подумал, что с помощью rake db:test:prepare я создаю клон своей обычной БД? - person YoniGeek; 01.08.2014
comment
Я думаю, что данные копируются только в том случае, если данные были изначально созданы с использованием файла ./config/seeds.rb? Я могу ошибаться там. Взгляните на этот вопрос SO или этот для получения дополнительной информации. - person jkeuhlen; 01.08.2014