този метод не работи в 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 Здравейте! ако го направя като u предложи, получавам това: 1) TrainSearch :rows има 46 елемента Failure/Error: expect(checker.data.size).to eq(46) очаквано: 46 got: 0   -  person YoniGeek    schedule 01.08.2014


Отговори (1)


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

Без да виждате самия код, е малко по-трудно да се интерпретира, но ето го.

Отправяте запитване към някакъв запис в базата данни (редове?) и очаквате да има 46 от тях. Вашата заявка връща релация ActiveRecord (масив от всички редове). За да разберете колко реда има, трябва да направите:

checker.data.count

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

person jkeuhlen    schedule 01.08.2014
comment
@jjkeuhlen това е правилно. И аз получавам нула, но защо? графикът db е пълен с obj:s - person YoniGeek; 01.08.2014
comment
Коя база данни е пълна? Може ли проблемът ви да е, че се опитвате да тествате данни, създадени в базата данни за разработка, а не в тестовата база данни (те са отделни бази данни)? - person jkeuhlen; 01.08.2014
comment
хей това е правилно моите данни са създадени в dev.section. Сега си помислих, че използвайки 'rake db:test:prepare' създавам клонинг на моята обикновена DB? - person YoniGeek; 01.08.2014
comment
Мисля, че копира данните само ако данните са били първоначално създадени с помощта на файла ./config/seeds.rb? Може и да греша там. Разгледайте този SO въпрос или този за повече информация там. - person jkeuhlen; 01.08.2014