mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-06 21:24:23 +08:00
24 lines
901 B
Ruby
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
|