New migration to add better auditing to user_roles and better column names there...
[rails.git] / db / migrate / 046_alter_user_roles_and_blocks.rb
1 require 'lib/migrate'
2
3 class AlterUserRolesAndBlocks < ActiveRecord::Migration
4   def self.up
5     # the initial granter IDs can be "self" - there are none of these
6     # in the current live DB, but there may be some in people's own local
7     # copies.
8     add_column :user_roles, :granter_id, :bigint
9     UserRole.update_all("granter_id = user_id")
10     change_column :user_roles, :granter_id, :bigint, :null => false
11     add_foreign_key :user_roles, [:granter_id], :users, [:id]
12
13     # make sure that [user_id, role] is unique
14     add_index :user_roles, [:user_id, :role], :name => "user_roles_id_role_unique", :unique => true
15
16     # change the user_blocks to have a creator_id rather than moderator_id
17     rename_column :user_blocks, :moderator_id, :creator_id
18
19     # change the "end_at" column to the more grammatically correct "ends_at"
20     rename_column :user_blocks, :end_at, :ends_at
21   end
22
23   def self.down
24     remove_column :user_roles, :granter_id
25     remove_index :user_roles, :name => "user_roles_id_role_unique"
26     rename_column :user_blocks, :creator_id, :moderator_id
27     rename_column :user_blocks, :ends_at, :end_at
28   end
29 end