Replace the existing "active" and "visible" with an enumerated status that allows for extra cases. Currently we have "suspended" for users who hve triggered the spam detector and "confirmed" for users that have triggered the detector but have been confirmed as vald by an admin.
29 lines
1 KiB
Ruby
29 lines
1 KiB
Ruby
require 'lib/migrate'
|
|
|
|
class AddStatusToUser < ActiveRecord::Migration
|
|
def self.up
|
|
create_enumeration :user_status_enum, ["pending","active","confirmed","suspended","deleted"]
|
|
|
|
add_column :users, :status, :user_status_enum, :null => false, :default => "pending"
|
|
|
|
User.update_all("status = 'deleted'", { :visible => false })
|
|
User.update_all("status = 'pending'", { :visible => true, :active => 0 })
|
|
User.update_all("status = 'active'", { :visible => true, :active => 1 })
|
|
|
|
remove_column :users, :active
|
|
remove_column :users, :visible
|
|
end
|
|
|
|
def self.down
|
|
add_column :users, :visible, :boolean, :default => true, :null => false
|
|
add_column :users, :active, :integer, :default => 0, :null => false
|
|
|
|
User.update_all("visible = true, active = 1", { :status => "active" })
|
|
User.update_all("visible = true, active = 0", { :status => "pending" })
|
|
User.update_all("visible = false, active = 1", { :status => "deleted" })
|
|
|
|
remove_column :users, :status
|
|
|
|
drop_enumeration :user_status_enum
|
|
end
|
|
end
|