Rails6.1+devise의 controller와view를 맞춤형 상태로 만들기
docker-compose에서 rails new, Rails 61+ 테스트 devise | 기타야마 준야|zen
TL;DR
아래의 보도와 차이가 많지 않다.
다만, 컨트롤러 생성 후 어떻게 편집
왜냐하면 잘 쓴 controller와view의 해설을 못 봤거든요.
그 근처에 내가 자세히 써 보았다.
이번에 할 일, 안 할 일.
차리다
지난번 앱 컨테이너의 단말기에서 작업을 계속합니다.
docker-compose down
용기가 떨어지면 다시 확인하세요docker-compose run --rm --service-ports app bash
에서 앱 컨테이너 단말기에 로그인하세요.지령으로 빠르게 준비하다
bundle exec rails g devise:views users
및bundle exec rails g devise:controllers users
그리고필요한 것을 만들어라.
(지난번
bundle install
시--path vendor/bundle
분실시 bundle exec를 사용하지 않고 다음 명령을 bundle exec의 부분으로 실행하십시오)$ bundle exec rails g devise:views users
Running via Spring preloader in process 10924
invoke Devise::Generators::SharedViewsGenerator
create app/views/users/shared
create app/views/users/shared/_error_messages.html.erb
create app/views/users/shared/_links.html.erb
invoke form_for
create app/views/users/confirmations
create app/views/users/confirmations/new.html.erb
create app/views/users/passwords
create app/views/users/passwords/edit.html.erb
create app/views/users/passwords/new.html.erb
create app/views/users/registrations
create app/views/users/registrations/edit.html.erb
create app/views/users/registrations/new.html.erb
create app/views/users/sessions
create app/views/users/sessions/new.html.erb
create app/views/users/unlocks
create app/views/users/unlocks/new.html.erb
invoke erb
create app/views/users/mailer
create app/views/users/mailer/confirmation_instructions.html.erb
create app/views/users/mailer/email_changed.html.erb
create app/views/users/mailer/password_change.html.erb
create app/views/users/mailer/reset_password_instructions.html.erb
create app/views/users/mailer/unlock_instructions.html.erb
invoke Devise::Generators::SharedViewsGenerator
create app/views/users/shared
create app/views/users/shared/_error_messages.html.erb
create app/views/users/shared/_links.html.erb
invoke form_for
create app/views/users/confirmations
create app/views/users/confirmations/new.html.erb
create app/views/users/passwords
create app/views/users/passwords/edit.html.erb
create app/views/users/passwords/new.html.erb
create app/views/users/registrations
create app/views/users/registrations/edit.html.erb
create app/views/users/registrations/new.html.erb
create app/views/users/sessions
create app/views/users/sessions/new.html.erb
create app/views/users/unlocks
create app/views/users/unlocks/new.html.erb
invoke erb
create app/views/users/mailer
create app/views/users/mailer/confirmation_instructions.html.erb
create app/views/users/mailer/email_changed.html.erb
create app/views/users/mailer/password_change.html.erb
create app/views/users/mailer/reset_password_instructions.html.erb
create app/views/users/mailer/unlock_instructions.html.erb
$ bundle exec rails g devise:controllers users
Running via Spring preloader in process 10933
create app/controllers/users/confirmations_controller.rb
create app/controllers/users/passwords_controller.rb
create app/controllers/users/registrations_controller.rb
create app/controllers/users/sessions_controller.rb
create app/controllers/users/unlocks_controller.rb
create app/controllers/users/omniauth_callbacks_controller.rb
===============================================================================
Some setup you must do manually if you haven't yet:
Ensure you have overridden routes for generated controllers in your routes.rb.
For example:
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: 'users/sessions'
}
end
===============================================================================
생성된 설명
$ bundle exec rails g devise:views users
이번 사용개요
path
○
공동으로 사용하는 물건
app/views/users/Shared 부하
○
사용자 등록 확인 메시지
app/views/users/confirmations 부하
○
비밀번호를 까먹었을 때.
app/views/users/passwords 부하
○
서명(등록 비밀번호), 비밀번호 편집 등
app/views/users/registrations 부하
○
로그인, 로그오프
app/views/users/sessions 부하
○
기능별 HTML 메시지 본문
app/views/users/mailer 다운로드
$ bundle exec rails g devise:controllers users
이번 사용개요
path
○
사용자 등록 확인 메시지
app/controllers/users/confirmations_controller.rb
○
비밀번호를 까먹었을 때.
app/controllers/users/passwords_controller.rb
○
서명(등록 비밀번호), 비밀번호 편집 등
app/controllers/users/registrations_controller.rb
○
로그인, 로그오프
app/controllers/users/sessions_controller.rb
○
블록 분리 기능
app/controllers/users/unlocks_controller.rb
×
OmniAuth의 호출
app/controllers/users/omniauth_callbacks_controller.rb
생성 컨트롤러에 대한 설명 삭제
bundle exec rails g devise:controllers users
에서 생성된 컨트롤러모두 논평에서 벗어났다.
사용할 컨트롤러의 주석을 제거하고 사용할 수 있는 상태로 만듭시다.
생성된 평론을 번역해 봤습니다.
더 많은 것이 있었기 때문에 실제로 생성된 컨트롤러가 두드려졌는지
puts
를 확인하기 위해 몇 개를 추가했다.스스로 더 확인하고 싶다면 적절히 추가
puts
해주세요.또한 생성된 컨트롤러 내의 주석의
# GET /resource/sign_in
등 /resource
가 되는 부분은 각각 생성 대상으로 하는 리소스입니다.라는 뜻이다.
그래서 이번
/resource
은/user
을 가리킨다.# GET /resource/sign_in
면# GET /users/sign_in
.마찬가지로 주석 부분은 편집되었습니다.
그럼 생성된 컨트롤러의 댓글을 벗어주세요.
app/controllers/users/confirmations_controller.rb
# frozen_string_literal: true
class Users::ConfirmationsController < Devise::ConfirmationsController
# GET /users/confirmation/new
def new
super
end
# POST /users/confirmation
def create
super
end
# GET /users/confirmation?confirmation_token=abcdef
def show
super
end
protected
# 確認指示を再送した後に使用する path
def after_resending_confirmation_instructions_path_for(resource_name)
super(resource_name)
end
# 確認後に使用する path
def after_confirmation_path_for(resource_name, resource)
super(resource_name, resource)
end
end
app/controllers/users/passwords_controller.rb# frozen_string_literal: true
class Users::PasswordsController < Devise::PasswordsController
# GET /users/password/new
def new
super
end
# POST /users/password
def create
super
end
# GET /users/password/edit?reset_password_token=abcdef
def edit
super
end
# PUT /users/password
def update
super
end
protected
def after_resetting_password_path_for(resource)
super(resource)
end
# リセットパスワードの指示を送信した後に使用する path
def after_sending_reset_password_instructions_path_for(resource_name)
super(resource_name)
end
end
app/controllers/users/registrations_controller.rb# frozen_string_literal: true
class Users::RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
before_action :configure_account_update_params, only: [:update]
# GET /users/sign_up
def new
super
puts '========================='
puts 'GET /resource/sign_up'
puts '========================='
end
# POST /users
def create
super
end
# GET /users/edit
def edit
super
puts '========================='
puts 'GET /resource/edit'
puts '========================='
end
# PUT /users
def update
super
end
# DELETE /users
def destroy
super
end
# GET /users/cancel
# 通常はサインイン後に
# 期限切れになるセッションデータを強制的に今すぐ期限切れにします。
# これは、ユーザーがすべての OAuth セッションデータを削除して、
# 途中で oauth サインイン/アップをキャンセルしたい場合に便利です。
def cancel
super
end
protected
# 許可するための追加のパラメータがある場合は、sanitizer に追加してください
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:attribute])
end
# 許可するための追加のパラメータがある場合は、sanitizer に追加してください
def configure_account_update_params
devise_parameter_sanitizer.permit(:account_update, keys: [:attribute])
end
# サインアップ後に使用する path
def after_sign_up_path_for(resource)
super(resource)
end
# アクティブでないアカウントのサインアップ後に使用する path
def after_inactive_sign_up_path_for(resource)
super(resource)
end
end
app/controllers/users/sessions_controller.rb# frozen_string_literal: true
class Users::SessionsController < Devise::SessionsController
before_action :configure_sign_in_params, only: [:create]
# GET /users/sign_in
def new
super
puts '========================='
puts 'GET /resource/sign_in'
puts '========================='
end
# POST /users/sign_in
def create
super
end
# GET /users/sign_out
# ここは config/initializers/devise.rb で config.sign_out_via = :get としているので DELETE ではなく GET
def destroy
super
end
protected
# 許可するための追加のパラメータがある場合は、sanitizer に追加してください
def configure_sign_in_params
devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
end
end
app/controllers/users/unlocks_controller.rb# frozen_string_literal: true
class Users::UnlocksController < Devise::UnlocksController
# GET /users/unlock/new
def new
super
end
# POST /users/unlock
def create
super
end
# GET /users/unlock?unlock_token=abcdef
def show
super
end
protected
# パスワードのロック解除指示を送信した後に使用する path
def after_sending_unlock_instructions_path_for(resource)
super(resource)
end
# リソースのロックを解除した後に使用する path
def after_unlock_path_for(resource)
super(resource)
end
end
생성된 컨트롤러를 사용하여config/routes를 진행합니다.편집
이것 괜찮아요?
config/routes.rb
# 前回の作業が終わった状態の config/routes.rb
Rails.application.routes.draw do
devise_for :users
get 'home/index'
get 'home/show'
root to: "home#index"
## 開発環境用letter_opener
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
이렇게 편집된 느낌.config/routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => {
:confirmations => 'users/confirmations',
:registrations => 'users/registrations',
:sessions => 'users/sessions',
:passwords => 'users/passwords'
}
get 'home/index'
get 'home/show'
root to: "home#index"
## 開発環境用letter_opener
mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
어렵지 않아요.동작 확인
에서 Rails 서버 확인 작업을 시작합니다.
방문
bundle exec rails s -b "0.0.0.0"
http://localhost:3000
에서 로그인을 눌러 보세요.rails s
의 터미널=========================
GET /resource/sign_up
=========================
Completed 200 OK in 135ms (Views: 124.2ms | Allocations: 5207)
나왔어요?했어!생성된 컨트롤러와 보기를 사용자 정의할 수 있습니다.
다른 부분도 추가
puts
해볼게요.생성된 컨트롤러와 보기를 사용했는지 확인하십시오.
이번 창고는 여기 있습니다.
참고 자료
Reference
이 문제에 관하여(Rails6.1+devise의 controller와view를 맞춤형 상태로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/junki555/articles/2a3aaff6f6a291텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)