Class: AddConfirmableToDevise

Inherits:
ActiveRecord::Migration
  • Object
show all
Defined in:
lib/generators/happy_seed/devise_confirmable/templates/add_confirmable_to_devise.rb

Instance Method Summary collapse

Instance Method Details

#downObject



20
21
22
23
# File 'lib/generators/happy_seed/devise_confirmable/templates/add_confirmable_to_devise.rb', line 20

def down
  remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
  # remove_columns :users, :unconfirmed_email # Only if using reconfirmable
end

#upObject

Note: You can’t use change, as User.update_all will fail in the down migration



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/generators/happy_seed/devise_confirmable/templates/add_confirmable_to_devise.rb', line 3

def up
  add_column :users, :confirmation_token, :string
  add_column :users, :confirmed_at, :datetime
  add_column :users, :confirmation_sent_at, :datetime
  add_column :users, :unconfirmed_email, :string # Only if using reconfirmable
  add_index :users, :confirmation_token, unique: true
  # User.reset_column_information # Need for some types of updates, but not for update_all.
  # To avoid a short time window between running the migration and updating all existing
  # users as confirmed, do the following
  # execute("UPDATE users SET confirmed_at = NOW()")
  # All existing user accounts should be able to log in after this.
  # Remind: Rails using SQLite as default. And SQLite has no such function :NOW.
  # Use :date('now') instead of :NOW when using SQLite.
  # => execute("UPDATE users SET confirmed_at = date('now')")
  # Or => User.all.update_all confirmed_at: Time.now
end