【Rails】Devise+Letter_opener로 메일 인증 기능의 구현 순서
10663 단어 authenticationDeviseGemRailsRails5
목적
Devise의 confirmable을 사용하여 사용자 신규 등록시 메일 인증 기능을 구현합니다.
환경
Ruby 2.6.5
Rails 5.2.3
Devise 4.7.1
letter_opener_web 1.0
Devise + Letter opener 구현 절차
Devise 설치
Gemfile
gem 'devise', '~> 4.7', '>= 4.7.1'
terminal
$ bundle install
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
터미널의 스텝에 따라, 이하 4개의 세팅의 확인이 필요합니다. (클릭으로 확장)
1. 메일 설정하기
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2.root 설정하기
config/routes.rb
Rails.application.routes.draw do
root "home#index"
end
3. 플래시 메시지 설정하기
app/views/layouts/application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. views 파일 생성
terminal
$ rails g devise:views
이상의 설정을 완료하면, 방금 생성한
devise.rb
로 config.mailer_sender의 내용을 편집해 봅시다.config/initializers/devise.rb
# ==> 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>
로 모델을 만듭니다.terminal
$ 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 기능을 추가합니다.
app/models/user.rb
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 주석 처리를 제거합니다.
db/migrate/xxxxxxxxxxx_devise_create_users.rb
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
terminal
$ rails db:migrate
당신을 위해, schema를 확인하십시오.
db/schema.rb
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 설치
Gemfile
group :development do
gem 'letter_opener_web', '~> 1.0'
end
terminal
$ bundle install
config/routes.rb
Your::Application.routes.draw do
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
#略
end
config/environments/development.rb
config.action_mailer.delivery_method = :letter_opener_web
이것으로 설정이 완료됩니다. 서버를 다시 시작하여 동작을 확인합니다.
확인
확인 오케이입니다!
참고문헌
htps : // 기주 b. 고 m / p
htps : // 기주 b. 이 m / fg 레 hm / ぇ는 r_ 오네 r_ ぇ b
Reference
이 문제에 관하여(【Rails】Devise+Letter_opener로 메일 인증 기능의 구현 순서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chimeiwang/items/8bcaf23ba9315ab39f79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)