초학자 프로그래밍 Devise 도입

5333 단어 Rails6devise

gem 설치


gem 'devise' #<= cではなくsなのに注意
$ bundle install
$ rails g devise:install

철자 오류로 인해 오류가 발생했으므로 조심하십시오.

모델 만들기


$ rails g devise Model
$ rails db:migrate

이번 마이그레이트 커맨드 실행 시에 에러가 나왔다.Mysql2::Error: Specified key was too long; max key length is 767 bytes디폴트로 설정되어 있다 encoding :utf8mb4 (은)는 1 문자당 4배까지 저장할 수 있기 (위해)때문에 일어난 에러. 그래서 utf8 로 변경했다.

config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8 #<= utf8mb4より変更
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

라우팅 설정



config/routes.rb
Rails.application.routes.draw do
  devise_for :users
end

터미널에서 라우팅 확인
                               Prefix Verb   URI Pattern                                                                              Controller#Action
                     new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
                         user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
                 destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
                    new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                                      PUT    /users/password(.:format)                                                                devise/passwords#update
                                      POST   /users/password(.:format)                                                                devise/passwords#create
             cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
                new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
               edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
                    user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                                      PUT    /users(.:format)                                                                         devise/registrations#update
                                      DELETE /users(.:format)                                                                         devise/registrations#destroy
                                      POST   /users(.:format)                                                                         devise/registrations#create

사용자의 URI를 확인하십시오. 모델을 만들고 마이그레이션하지 않으면 라우팅 오류가 발생했습니다.methods.rb:282:in const_get': uninitialized constant User (NameError)`

뷰 만들기


$ rails generate devise:views

보기 확인



localhost:3000/users/sign_in에서 뷰 확인.


요약



우선 공식 문서에서 대략적인 순서를 파악. 그 후, 각 단계에서 대략 에러가 발생하기 때문에, 매번 검색하여 에러 내용을 임시 검증한다.

사이고에게



프로그래밍의 초학자입니다. 그날 배운 것을 학습의 일환으로 출력하고 있습니다. 보다 깊게 학습해 가고 싶다고 생각하고 있으므로, 내용에 잘못이 있으면 지적등 받을 수 있으면 다행입니다.

참고 도서:퍼펙트 Ruby on Rails【증보 개정판】스가와라 마사노리/마에지마 마이치/하시다치 토모히로/고토 유이치/이가라시 쿠니아키

참고

좋은 웹페이지 즐겨찾기