scinote-web/db/migrate/20250707080046_add_unique_constraint_to_user_assignments.rb

24 lines
901 B
Ruby

# frozen_string_literal: true
class AddUniqueConstraintToUserAssignments < ActiveRecord::Migration[7.2]
def up
# delete the duplicates
execute(
'WITH uniq AS
(SELECT DISTINCT ON (user_id, assignable_type, assignable_id, team_id) * FROM user_assignments)
DELETE FROM user_assignments WHERE user_assignments.id NOT IN
(SELECT id FROM uniq)'
)
remove_index :user_assignments, name: 'index_user_assignments_on_assignable'
add_index :user_assignments,
%i(assignable_type assignable_id user_id team_id),
unique: true,
name: 'index_user_assignments_on_unique_assignable_in_team'
end
def down
add_index :user_assignments, %i(assignable_type assignable_id), name: 'index_user_assignments_on_assignable'
remove_index :user_assignments, name: 'index_user_assignments_on_unique_assignable_in_team'
end
end