【Rails】Devise+Letter_openerでメール認証機能の実装手順
目的
Deviseのconfirmableを使って、ユーザー新規登録時メール認証機能を実装します。
環境
Ruby 2.6.5
Rails 5.2.3
Devise 4.7.1
letter_opener_web 1.0
Devise + Letter opener 実装手順
Deviseをインストールする
gem 'devise', '~> 4.7', '>= 4.7.1'
$ bundle install
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
ターミナルのステップによる、以下4つのセッティングの確認が必要です。(クリックで展開)
1. メールの設定をする
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2.rootの設定をする
Rails.application.routes.draw do
root "home#index"
end
3. フラッシュメッセージの設定をする
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. viewsファイルを生成する
$ rails g devise:views
以上のセッティングを完了したら、先ほど生成したdevise.rb
でconfig.mailer_senderの内容を編集しましょう。
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class
# with default "from" parameter.
config.mailer_sender = '[email protected]'
モデルを作成する
rails generate devise <MODEL>
でモデルを作成します。
$ rails g devise User
invoke active_record
create db/migrate/20191027084057_devise_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
そして、confirmableの機能を追加します。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable, :confirmable
end
マイグレーションファイルを編集する
マイグレイトする前にconfirmableのコメントアウトを外します。
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
#略
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
#略
end
#略
add_index :users, :confirmation_token, unique: true
#略
end
end
$ rails db:migrate
念のために、schemaを確認しましょう。
ActiveRecord::Schema.define(version: 2019_10_27_084057) do
create_table "users", force: :cascade do |t|
#略
t.string "confirmation_token"
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
#略
end
end
letter_opener_web をインストールする
group :development do
gem 'letter_opener_web', '~> 1.0'
end
$ bundle install
Your::Application.routes.draw do
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
#略
end
config.action_mailer.delivery_method = :letter_opener_web
これで、設定完了です。もう一度サーバーを起動して動作を確認します。
確認
参考文献
https://github.com/plataformatec/devise
https://github.com/fgrehm/letter_opener_web
Author And Source
この問題について(【Rails】Devise+Letter_openerでメール認証機能の実装手順), 我々は、より多くの情報をここで見つけました https://qiita.com/chimeiwang/items/8bcaf23ba9315ab39f79著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .