Devise - email更新時に確認メールを送る(reconfirmable)

More than 3 years have passed since last update.


必要事項(4点)


confirmableモジュールがセットされていること


/app/models/user.rb


class User < ActiveRecord::Base
#...
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
#...


reconfirmableが有効になっていること


/config/initializers/devise.rb

Devise.setup do |config|

#...
config.reconfirmable = true
#...


データベースにunconfirmed_emailコラムが存在すること

# == Schema Information

#
# Table name: users
#
# id :integer not null, primary key
# email :string default(""), not null
# encrypted_password :string default(""), not null
# reset_password_token :string
# reset_password_sent_at :datetime
# remember_created_at :datetime
# sign_in_count :integer default(0), not null
# current_sign_in_at :datetime
# last_sign_in_at :datetime
# current_sign_in_ip :inet
# last_sign_in_ip :inet
# created_at :datetime
# updated_at :datetime
# confirmation_token :string
# confirmed_at :datetime
# confirmation_sent_at :datetime
# admin :boolean default(FALSE)
# username :string
# provider :string
# uid :string
# unconfirmed_email :string
#


ユーザーに現在メール確認待ちの状態であることを知らせること

- if devise_mapping.confirmable? && resource.pending_reconfirmation?

.alert.alert-warning
Currently waiting confirmation for: #{resource.unconfirmed_email}

Screenshot 2015-08-09 18.07.17.png


特定の状況でのみreconfirmable無効にしたい場合



#...

def update
@user = User.find(params[:id])
@user.skip_reconfirmation!
if @user.update_attributes(params[:user])
flash[:notice] = "User was successfully updated."
redirect_to edit_admin_user_path(@user)
else
render :edit
end
end
#...


資料