# frozen_string_literal: true class AddTargetToAssignments < ActiveRecord::Migration[6.1] def up add_column :assignments, :target_id, :integer add_column :assignments, :target_type, :string execute <<~SQL UPDATE assignments SET target_type = 'Topic', target_id = topic_id WHERE target_type IS NULL SQL change_column :assignments, :target_id, :integer, null: false change_column :assignments, :target_type, :string, null: false add_index :assignments, [:target_id, :target_type], unique: true add_index :assignments, [:assigned_to_id, :assigned_to_type, :target_id, :target_type], unique: true, name: 'unique_target_and_assigned' end def down remove_columns :assignments, :target_id, :target_type end end