Что заставило бы 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'