Способ назначения repository_id
неверен. Что происходит, когда вы запускаете эту функцию во второй раз? Поле индекса всегда будет начинаться с 0. Таким образом, ваш код всегда будет искать репозиторий с идентификатором 1.
Так что каждый раз, когда вы запускаете этот скрипт, даже если он создает новые репозитории. Участники размещаются в тех же репозиториях. И если вы удалили эти первые 115 записей репозитория, то ваш участник не будет создан (поскольку он попытается найти репозиторий с идентификатором 1).
Предполагается, что ваши ассоциации верны (репозиторий has_many Contributors)
Как это исправить?
Шаг 1.) Вам не нужно объявлять индекс, так как индекс всегда будет начинаться с 0, поэтому он не очень хорош или бесполезен для использования для установки идентификаторов.
@trending_array.each do |item|
Шаг 2.) Сохраните созданный репозиторий в переменную. Упрощает манипулирование и последующее обновление
repository = Repository.create(title: item[:title], description: item[:description], language: item[:language])
Шаг 3.) Используйте вновь созданную переменную репозитория для создания дочерних участников.
repository.contributors.create(username: contributor)
Таким образом, идентификаторы не нужны, так как вы просто используете репозиторий, который вы только что создали для создания участников для этой записи.
Ваш новый блок должен выглядеть следующим образом:
@trending_array.each do |item|
repository = Repository.create(title: item[:title], description: item[:description], language: item[:language])
item[:contributors].each do |contributor|
repository.contributors.create(username: contributor)
end
end