【Rails】devise_invitable 使ってみる
はじめに
業務でdevise_invitable
gemを使っているプロジェクトがあるが、自分で実装したことはなかったためカスタマイズなしで手順を確認しました。
環境
前提
- rails newした後にdeviseをインストールし、Userを作成。認証しているUserのみアクセスできるUser一覧画面のみ作成済
- letter_openerを入れ、メールが確認できるように設定済
そこからdevise_invitableを導入する手順です。
手順
① gemfileに追加
gem 'devise_invitable'
② インストール
$ rails g devise_invitable:install
③ deviseで作成したモデルでinvitableが使えるようにする
$ rails g devise_invitable User $ rails db:migrate
- マイグレーションファイル
xxxxxxxxxx_devise_invitable_add_to_users.rb
が作成される。invitableで使用するカラムがUsersテーブルに追加される - Userモデルに
devise :invitable
が挿入される
この時点でrails routes
で確認すると、invitationのパスが設定されている
$ rails routes ... accept_user_invitation GET /users/invitation/accept(.:format) devise/invitations#edit remove_user_invitation GET /users/invitation/remove(.:format) devise/invitations#destroy new_user_invitation GET /users/invitation/new(.:format) devise/invitations#new user_invitation PATCH /users/invitation(.:format) devise/invitations#update PUT /users/invitation(.:format) devise/invitations#update POST /users/invitation(.:format) devise/invitations#create
④ viewを作成
rails g devise_invitable:views invoke DeviseInvitable::Generators::MailerViewsGenerator exist app/views/devise/mailer create app/views/devise/mailer/invitation_instructions.html.erb create app/views/devise/mailer/invitation_instructions.text.erb invoke simple_form_for create app/views/devise/invitations create app/views/devise/invitations/edit.html.erb create app/views/devise/invitations/new.html.erb
⑤ ユーザーを作成してみる
Userモデルからinviteメソッドを使用して、Userを作成しつつ招待メールを送信。
$ rails c > User.invite!(email: 'makky@example.com')
inviteメソッドから招待メールが送信される
招待リンクから遷移するとパスワード入力が入力できる
パスワードを設定して、rootに設定したページに遷移
Userが作成され、ログイン済になった!