First version of blocking feature. Allows both time-based (for map protection) and...
[rails.git] / db / migrate / 044_create_user_roles.rb
1 require 'lib/migrate'
2
3 class CreateUserRoles < ActiveRecord::Migration
4   def self.up
5     create_enumeration :user_role_enum, ["administrator", "moderator"]
6
7     create_table :user_roles do |t|
8       t.column :user_id, :bigint, :null => false
9
10       t.timestamps
11     end
12     add_column :user_roles, :role, :user_role_enum, :null => false
13
14     User.all(:conditions => ['administrator = ?', true]).each do |user|
15       UserRole.create(:user_id => user.id, :role => "administrator")
16     end
17     remove_column :users, :administrator
18
19     add_foreign_key :user_roles, [:user_id], :users, [:id]
20     add_index :user_roles, [:user_id]
21   end
22
23   def self.down
24     add_column :users, :administrator, :boolean, :default => false, :null => false
25     UserRole.all(:conditions => ['role = ?', "administrator"]).each do |role|
26       user = User.find(role.user_id)
27       user.administrator = true
28       user.save!
29     end
30     drop_table :user_roles
31     drop_enumeration :user_role_enum
32   end
33 end