namespace :iqvoc do
namespace :cleanup do desc 'adds explicit change notes positioning numbers' task :add_change_note_positions => :environment do change_notes = Iqvoc.change_note_class.joins(:annotations) .where(note_annotations: { predicate: ['created', 'modified'] }) .order('note_annotations.value ASC') change_notes.group_by(&:owner).each do |_owner, notes| # slow for big collections notes.each_with_index do |note, i| note.update_column(:position, i.succ) end end end desc 'adds explicit notes positioning numbers to other note types' task :add_note_positions => :environment do note_types = Iqvoc::Concept.note_classes - [Iqvoc.change_note_class] note_types.each do |klass| puts "Migrating positions for #{klass}" notes = klass.where(position: nil).order(:id) notes.group_by(&:owner).each do |_owner, notes_for_owner| # slow for big collections notes_for_owner.each_with_index do |note, i| note.update_column(:position, i.succ) end end end end end
end