From b377d8b538d990c46eb4edb04ec7386f89b89f94 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 1 Aug 2017 10:53:06 +0200 Subject: [PATCH 1/2] Add id column on AssignTo --- db/migrate/20170801083632_add_id_to_assign_to.rb | 5 +++++ db/schema.rb | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20170801083632_add_id_to_assign_to.rb diff --git a/db/migrate/20170801083632_add_id_to_assign_to.rb b/db/migrate/20170801083632_add_id_to_assign_to.rb new file mode 100644 index 000000000..195930ab5 --- /dev/null +++ b/db/migrate/20170801083632_add_id_to_assign_to.rb @@ -0,0 +1,5 @@ +class AddIdToAssignTo < ActiveRecord::Migration[5.0] + def change + add_column :assign_tos, :id, :primary_key + end +end diff --git a/db/schema.rb b/db/schema.rb index 31122ab38..04ae79e32 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170713151123) do +ActiveRecord::Schema.define(version: 20170801083632) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -64,7 +64,7 @@ ActiveRecord::Schema.define(version: 20170713151123) do t.datetime "updated_at", null: false end - create_table "assign_tos", id: false, force: :cascade do |t| + create_table "assign_tos", force: :cascade do |t| t.integer "gestionnaire_id" t.integer "procedure_id" t.index ["gestionnaire_id"], name: "index_assign_tos_on_gestionnaire_id", using: :btree From 7fdcc91e0c4dcaa440d2ef11c34e28051dcc9911 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 1 Aug 2017 11:27:14 +0200 Subject: [PATCH 2/2] Clean assign_to duplicates with a rake task --- lib/tasks/2017_08_01_clean_assign_to.rake | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 lib/tasks/2017_08_01_clean_assign_to.rake diff --git a/lib/tasks/2017_08_01_clean_assign_to.rake b/lib/tasks/2017_08_01_clean_assign_to.rake new file mode 100644 index 000000000..fd407a956 --- /dev/null +++ b/lib/tasks/2017_08_01_clean_assign_to.rake @@ -0,0 +1,12 @@ +namespace :'2017_08_01_clean_assign_to' do + task clean: :environment do + duplicates = AssignTo.group(:gestionnaire_id, :procedure_id).count.select{ |_gestionnaire_id_procedure_id, count| count > 1 }.keys + + duplicate_ids = duplicates.map { |gestionnaire_id, procedure_id| AssignTo.where(gestionnaire_id: gestionnaire_id, procedure_id: procedure_id).pluck(:id) } + + duplicate_ids.each do |ids| + ids.pop + AssignTo.where(id: ids).destroy_all + end + end +end