『devise』のミニTipsを3つ紹介します。
(1) ログイン・ログアウト時のリダイレクト先の変更 (2) ユーザー登録完了後にメールアドレスの確認をする (3) ユーザー登録完了後のリダイレクト先の変更
今までログイン機能を持たせてきたアプリケーションではたいてい設定する項目ですので、忘備録がてらのメモです。
👽 (1) ログイン・ログアウト時のリダイレクト先の変更
app/controllers/application_controller.rb
に以下を追加。admin_root_path
を自分の希望するパスに変更。
def after_sign_in_path_for(resource) |
🚌 (2) ユーザー登録完了後にメールアドレスの確認をする
前提
Devise/cancancanを使ってログイン機能を実装する
のひととおりログイン機能ができている前提で話を進めます。
また、ここではdeviseでユーザー管理をするモデルをAdminUser
とします。
MigrationファイルのConfirmableのコメントアウトを外す
db/migrate/xxxx_admin_users.rb
内のConfirmable
に関するカラムをテーブルに追加。
## Confirmable |
(僕の使っているバージョンでは上記のようになっていました)
AdminUserモデルにconfirmableを追加
app/models/admin_users.rb
に:confirmable
を追加。
# ↓ deviseに :confirmable を追加 |
メールの送付元を変更
config/initializers/devise.rb
の次の設定を変更。
config.mailer_sender = 'noreply@example.com' |
開発環境でのメール送付設定
config/environments/development.rb
に次の設定を追記。ここでは例としてGmailの設定にします。
config.action_mailer.default_url_options = { :host => 'localhost:3000' } |
設定が完了すると、ユーザー登録が完了したらメールが送付されます!
🍣 (3) ユーザー登録完了後のリダイレクト先の変更
リダイレクト先を設定
app/controllers/registrations_controller.rb
を追加して以下のように記述。admin_user_mail_sent_message_path
を各自のリダイレクト先に変更。
class RegistrationsController < Devise::RegistrationsController |
ルーティングの修正
config/routes.rb
のdevise_forの設定を変更。
devise_for :users, controllers: { registrations: 'registrations' } |
これで確認メール送付完了時のリダイレクト先が変わります!
🐯 変更来歴
(07-04 08:55) 新規作成
(07-05 08:35) 記述修正