FIX: from Sam: post_actions.targets_topic should not be nullable. Delete duplicate likes and prevent them from happening again.

This commit is contained in:
Neil Lalonde 2014-08-15 14:56:48 -04:00
parent 62b6e82e6d
commit bca855d80e

View File

@ -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