Что заставило бы RSpec распечатать неправильный размер массива до to_yaml?

Кажется, что RSpec не выводит правильный размер массива, почти как если бы он не обрабатывал все, пока его не попросили что-то вывести. Что может быть причиной этого?

Вот часть кода спецификации:

puts project.documents[0].tables[0].digits[5].relationships.size
project.documents[0].tables[0].digits[5].relationships.to_yaml
puts project.documents[0].tables[0].digits[5].relationships.size

Вышеприведенный код выводит:

2
6

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

Изменить: То же самое происходит, если я вместо этого (замените код выше на следующий) пройти и сохранить каждое из отношений:

puts project.documents[0].tables[0].digits[5].relationships.size
project.documents.each do |doc|
  doc.tables[0].digits.each do |dig|
    dig.relationships.each do |rel|
      rel.save!
    end
  end
end
puts project.documents[0].tables[0].digits[5].relationships.size

За исключением того, что результаты:

1
6

Редактировать 2: Класс Отношений также принадлежит двум цифрам, и у цифр много связей. Может ли это быть влиятельным? Вот код из Relations.rb

belongs_to :digit, :class_name => 'Digit', :foreign_key => 'digit_id'
belongs_to :digit_b, :class_name => 'Digit', :foreign_key => 'digit_b_id'

0 ответов

Другие вопросы по тегам