]> git.openstreetmap.org Git - rails.git/blob - db/migrate/051_add_status_to_user.rb
Merge remote-tracking branch 'upstream/pull/2839'
[rails.git] / db / migrate / 051_add_status_to_user.rb
1 require "migrate"
2
3 class AddStatusToUser < ActiveRecord::Migration[4.2]
4   class User < ApplicationRecord
5   end
6
7   def self.up
8     create_enumeration :user_status_enum, %w[pending active confirmed suspended deleted]
9
10     add_column :users, :status, :user_status_enum, :null => false, :default => "pending"
11
12     User.where(:visible => false).update_all(:status => "deleted")
13     User.where(:visible => true, :active => 0).update_all(:status => "pending")
14     User.where(:visible => true, :active => 1).update_all(:status => "active")
15
16     remove_column :users, :active
17     remove_column :users, :visible
18   end
19
20   def self.down
21     add_column :users, :visible, :boolean, :default => true, :null => false
22     add_column :users, :active, :integer, :default => 0, :null => false
23
24     User.where(:status => "active").update_all(:visible => true, :active => 1)
25     User.where(:status => "pending").update_all(:visible => true, :active => 0)
26     User.where(:status => "deleted").update_all(:visible => false, :active => 1)
27
28     remove_column :users, :status
29
30     drop_enumeration :user_status_enum
31   end
32 end