Merge pull request #640 from sgmap/clean_assign_to_duplicates

Clean assign_to duplicates
This commit is contained in:
Mathieu Magnin 2017-08-28 11:00:19 +02:00 committed by GitHub
commit 324628835d
3 changed files with 19 additions and 2 deletions

View file

@ -0,0 +1,5 @@
class AddIdToAssignTo < ActiveRecord::Migration[5.0]
def change
add_column :assign_tos, :id, :primary_key
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # 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 # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -64,7 +64,7 @@ ActiveRecord::Schema.define(version: 20170713151123) do
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
end 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 "gestionnaire_id"
t.integer "procedure_id" t.integer "procedure_id"
t.index ["gestionnaire_id"], name: "index_assign_tos_on_gestionnaire_id", using: :btree t.index ["gestionnaire_id"], name: "index_assign_tos_on_gestionnaire_id", using: :btree

View file

@ -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