diff --git a/script/labels_cleanup.rb b/script/labels_cleanup.rb new file mode 100644 index 00000000..b08f7643 --- /dev/null +++ b/script/labels_cleanup.rb @@ -0,0 +1,17 @@ +Label.find_each do |label| + downcase_name = label.name.downcase + dups = Label.where("name ilike ?", "%#{downcase_name}") + if dups.count > 1 + # delete all except 1 + the_one_true_label = dups.first + the_one_true_label.update(name: name.downcase) + dups.pop + dups.find_each do |dup| + shows = ScheduledShowLabel.where(label: dup) + shows.update_all label_id: the_one_true_label.id + tracks = TrackLabel.where(label: dup) + tracks.update_all label_id: the_one_true_label.id + end + dups.map(&:destroy) + end +end diff --git a/spec/models/label_spec.rb b/spec/models/label_spec.rb new file mode 100644 index 00000000..9e4cfcc0 --- /dev/null +++ b/spec/models/label_spec.rb @@ -0,0 +1,9 @@ +require 'rails_helper' + +RSpec.describe Label, type: :model do + it 'always save the name as downcase' do + radio = FactoryBot.create :radio + label = Label.create name: 'FooOO', radio: radio + expect(label.name).to eq 'foooo' + end +end