Я недавно унаследовал и обновил очень обширное приложение на Rails 4.Кажется, все работает нормально, за исключением того, что я замечаю эти проблемы в нескольких областях (к сожалению, тестирование не выполняется автоматически в этих особых случаях).
Из другой части приложения:
_otherstuff = Thing.where("color = orange")
_otherstuff_ids = _otherstuff.collect &:id
Код проблемы:
things = Thing.where("color = red")
things.each do |thing|
if !_otherstuff_ids.include?(thing.id)
_otherstuff << thing # Rails 5 is not happy with this anymore?
end
end
Очевидно, что если я преобразую _otherstuff.to_a, то проблема исчезнет.Но мой вопрос заключается в том, почему сейчас это проблема с Rails 5, а с Rails 4 это не было проблемой. Похоже, что Rails 4 автоматически преобразовывал AssociationRelation в массив, а затем помещал в него новый объект.В документации Rails эта операция, по-видимому, добавляет новый объект к ассоциации, устанавливающей внешние ключи, чего не было в этом случае ... приложение ожидало такого поведения в нескольких областях.Что изменилось и что я должен знать сейчас?