среда, 15 июля 2015 г.

Изучаем Devise 1: Настройка подтверждения

Установка Devise описана здесь и здесь.

После установки мы хотим добавить подтверждение учетной записи по email. Для этого служит модуль confirmable.

Настройка подтверждения

 Devise сгенерировал нам такой класс модели:
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
 
end
В ней перечислены задействованные модули, confirmable среди них нет. Добавляем:
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :confirmable
end
Теперь нужно добавил необходимые поля в таблицу users. Для этого создадим миграцию:
rails g migration add_confirmable_to_users
 Пишем код миграции:
class AddConfirmableToUsers < ActiveRecord::Migration
  def change
    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
  end

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

end
Применяем миграцию:
rake db:migrate
Также нам нужно добавить миграцию для добавления поля unconfirmed_email:
class AddUnconfirmedEmailToUsers < ActiveRecord::Migration
  def change
    add_column :users, :unconfirmed_email, :string
  end
end

Всё. Ссылка на исходники примера.

Комментариев нет:

Отправить комментарий