diff --git a/db/migrate/20140815183851_fix_index_on_post_actions.rb b/db/migrate/20140815183851_fix_index_on_post_actions.rb new file mode 100644 index 00000000000..ed403da399e --- /dev/null +++ b/db/migrate/20140815183851_fix_index_on_post_actions.rb @@ -0,0 +1,26 @@ +class FixIndexOnPostActions < ActiveRecord::Migration + def change + execute 'UPDATE post_actions SET targets_topic = false WHERE targets_topic IS NULL' + change_column :post_actions, :targets_topic, :boolean, default: false, null: false + + execute ' + DELETE FROM post_actions pa + USING post_actions x + WHERE pa.user_id = x.user_id AND + pa.post_action_type_id = x.post_action_type_id AND + pa.post_id = x.post_id AND + pa.targets_topic = x.targets_topic AND + pa.id < x.id AND + pa.deleted_at IS NULL AND + x.deleted_at IS NULL + ' + + remove_index "post_actions", name: "idx_unique_actions" + add_index "post_actions", + ["user_id", "post_action_type_id", + "post_id", "targets_topic"], + name: "idx_unique_actions", + unique: true, + where: 'deleted_at IS NULL' + end +end