【Rails】2개의(복수)devise를 도입

6613 단어 루비Railsdevise

소개



"사용자와 공급자", "관리자 및 사용자", "선생님과 학생"등 등록 정보가 2개 이상(복수) 필요한 경우 devise도 마찬가지로 2개 이상(복수) 필요합니다.
2개의(복수)devise의 도입 방법을 소개합니다.

목차


  • devise 설치
  • 모델 만들기
  • 라우팅 설정
  • 컨트롤러 만들기

  • 개발 환경



    루비 2.6.5
    rails 6.0.0
    devise 4.7.3

    구현



    그럼 구현해 갑니다~

    1. devise 설치



    devise gem을 소개합니다.

    Gemfile.
    # 中略
    gem 'devise'
    

    작성했으면 bundle install을 실행합시다.

    터미널.
    bundle install
    

    Gem을 설치한 후 rails s를 control+C로 한 번 중지하고 서버를 다시 시작해야 합니다.

    그런 다음 응용 프로그램 내에서 devise를 사용할 수 있도록 다음 명령을 실행합니다.

    터미널.
    rails g devise:install
    

    터미널.
    create  config/initializers/devise.rb
    create  config/locales/devise.en.yml
    .........#省略
    

    devise가 설치되었습니다.

    그런 다음 다음 두 줄을 주석 처리하여 변경합니다.

    config/initializers/devise.rb
      # ==> Scopes configuration
      # Turn scoped views on. Before rendering "sessions/new", it will first check for
      # "users/sessions/new". It's turned off by default because it's slower if you
      # are using only default views.
      config.scoped_views = true  # ←複数のmodelで個別のログイン画面を使う。 これをtrueにします。
    
    
      # Configure the default scope given to Warden. By default it's the first
      # devise role declared in your routes (usually :user).
      # config.default_scope = :user
    
      # Set this configuration to false if you want /users/sign_out to sign out
      # only the current scope. By default, Devise signs out all scopes.
      config.sign_out_all_scopes = false  #複数のモデルを扱う際、いずれかがログアウトした時に全てログアウトする。 これをfalseにします。
    

    2. 모델 만들기



    devise가 2개이므로 당연히 2개의 모델을 작성합니다.
    rails g devise user
    rails g devise admin
    

    관리자 계정이 되는 admin에 대해 sign_up을 원하지 않는 경우 Admin 모델을 수정합니다.
    그렇지 않으면 날려주세요.
    :registerable 불필요한 부분을 주석 처리합니다.

    app/models/admin.rb
    class Admin < ApplicationRecord
      # Include default devise modules. Others available are:
      # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
      devise :database_authenticatable, #:registerable, ←ここをコメントアウトします。
             :recoverable, :rememberable, :validatable
    end
    

    3. 라우팅 설정



    devise를 도입하면 디폴트로 라우팅을 설정해 주고 있습니다만, rails routes 했을 때만 보기 어렵기 때문에 재설정합니다.

    devise가 쭉 나란히 보이기 어렵다,,,,
    아래에 편집합니다.

    routes.rb
    Rails.application.routes.draw do
      devise_for :admins
      devise_for :users
      # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
    #ここまでが自動生成されてます。
    
    #下記に編集します。
      devise_for :admins, controllers: {
        sessions:      'admins/sessions',
        passwords:     'admins/passwords',
        registrations: 'admins/registrations'
      }
      devise_for :users, controllers: {
        sessions:      'users/sessions',
        passwords:     'users/passwords',
        registrations: 'users/registrations'
      }
      root to: 'home#index'
    end
    
    

    admins와 suers에 헤어져 보기 쉬워집니다.
    ※주의: 사인아웃할 때 HTTP 메시지를 GET으로 변경해야 하는 등, 여러가지 에러가 나왔습니다.
    보기 힘들어도 괜찮다면 기본값을 사용하는 것이 좋습니다.



    4. 컨트롤러 및 뷰 작성



    컨트롤러와 뷰도 두 개씩 생성합니다.
    ※컨트롤러는 특히 편집할 예정이 없으면 날려 주세요.

    터미널.
    rails g devise:views users
    rails g devise:controllers users
    

    터미널.
    rails g devise:views admins
    rails g devise:controllers admins
    
    localhost:3000/users/sign_inlocalhost:3000/admins/sign_in 의 각각 페이지가 표시되는 것을 확인할 수 있으면 완성입니다! !

    요약



    2devise의 도입 방법이었습니다.

    마지막으로



    저는 프로그래밍 초학자입니다만, 저와 같이 엔지니어를 목표로 하는 분들의 도움이 된다고 생각해, 기사를 투고하고 있습니다.
    그럼 또 다음에 만나요~

    참고



    htps : // m / 야마토 / ms / 54, b4, 08, 126, f7
    htps : // / c c xy. xy·bぉg/2020/03/20/루 by33/

    좋은 웹페이지 즐겨찾기