mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 23:21:30 +08:00
25 lines
776 B
Ruby
25 lines
776 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class FixDuplicatedChecklistsPositions < ActiveRecord::Migration[7.0]
|
||
|
def up
|
||
|
ActiveRecord::Base.no_touching do
|
||
|
checklists = Checklist.where(id: ChecklistItem.select(:checklist_id)
|
||
|
.group(:checklist_id, :position)
|
||
|
.having('COUNT(*) > 1').distinct)
|
||
|
|
||
|
ChecklistItem.acts_as_list_no_update do
|
||
|
checklists.find_each do |checklist|
|
||
|
checklist.checklist_items.each.with_index do |checklist_item, index|
|
||
|
checklist_item.position = index
|
||
|
checklist_item.save!(validate: false)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
raise ActiveRecord::IrreversibleMigration
|
||
|
end
|
||
|
end
|