diff --git a/db/migrate/20220514213623_deduplicate_arduinos.rb b/db/migrate/20220514213623_deduplicate_arduinos.rb new file mode 100644 index 0000000..f10b8f7 --- /dev/null +++ b/db/migrate/20220514213623_deduplicate_arduinos.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# Elimina arduinos multiplicados +class DeduplicateArduinos < ActiveRecord::Migration[6.1] + def up + Raspberry.find_each do |raspberry| + unique_local_ids = raspberry.arduinos.distinct(:local_id).pluck(:local_id) + + unique_local_ids.each do |unique_local_id| + arduinos = raspberry.arduinos.where(local_id: unique_local_id) + unique_arduino = arduinos.first + duplicated_arduinos = arduinos.where.not(id: unique_arduino.id) + + result = Sensor.where(arduino_id: duplicated_arduinos.pluck(:id)).update_all(arduino_id: unique_arduino.id) + duplicated_arduinos.destroy_all if result + end + end + end + + def down; end +end