【Rails】2개의(복수)devise를 도입
소개
"사용자와 공급자", "관리자 및 사용자", "선생님과 학생"등 등록 정보가 2개 이상(복수) 필요한 경우 devise도 마찬가지로 2개 이상(복수) 필요합니다.
2개의(복수)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.rbclass 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.rbRails.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_in
와 localhost:3000/admins/sign_in
의 각각 페이지가 표시되는 것을 확인할 수 있으면 완성입니다! !
요약
2devise의 도입 방법이었습니다.
마지막으로
저는 프로그래밍 초학자입니다만, 저와 같이 엔지니어를 목표로 하는 분들의 도움이 된다고 생각해, 기사를 투고하고 있습니다.
그럼 또 다음에 만나요~
참고
htps : // m / 야마토 / ms / 54, b4, 08, 126, f7
htps : // / c c xy. xy·bぉg/2020/03/20/루 by33/
Reference
이 문제에 관하여(【Rails】2개의(복수)devise를 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AKI3/items/09f7de4abb6b4a34cde3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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.rbclass 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.rbRails.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_in
와 localhost:3000/admins/sign_in
의 각각 페이지가 표시되는 것을 확인할 수 있으면 완성입니다! !
요약
2devise의 도입 방법이었습니다.
마지막으로
저는 프로그래밍 초학자입니다만, 저와 같이 엔지니어를 목표로 하는 분들의 도움이 된다고 생각해, 기사를 투고하고 있습니다.
그럼 또 다음에 만나요~
참고
htps : // m / 야마토 / ms / 54, b4, 08, 126, f7
htps : // / c c xy. xy·bぉg/2020/03/20/루 by33/
Reference
이 문제에 관하여(【Rails】2개의(복수)devise를 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AKI3/items/09f7de4abb6b4a34cde3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails g devise user
rails g devise admin
class Admin < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, #:registerable, ←ここをコメントアウトします。
:recoverable, :rememberable, :validatable
end
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_in
와 localhost:3000/admins/sign_in
의 각각 페이지가 표시되는 것을 확인할 수 있으면 완성입니다! !
요약
2devise의 도입 방법이었습니다.
마지막으로
저는 프로그래밍 초학자입니다만, 저와 같이 엔지니어를 목표로 하는 분들의 도움이 된다고 생각해, 기사를 투고하고 있습니다.
그럼 또 다음에 만나요~
참고
htps : // m / 야마토 / ms / 54, b4, 08, 126, f7
htps : // / c c xy. xy·bぉg/2020/03/20/루 by33/
Reference
이 문제에 관하여(【Rails】2개의(복수)devise를 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AKI3/items/09f7de4abb6b4a34cde3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rails g devise:views users
rails g devise:controllers users
rails g devise:views admins
rails g devise:controllers admins
2devise의 도입 방법이었습니다.
마지막으로
저는 프로그래밍 초학자입니다만, 저와 같이 엔지니어를 목표로 하는 분들의 도움이 된다고 생각해, 기사를 투고하고 있습니다.
그럼 또 다음에 만나요~
참고
htps : // m / 야마토 / ms / 54, b4, 08, 126, f7
htps : // / c c xy. xy·bぉg/2020/03/20/루 by33/
Reference
이 문제에 관하여(【Rails】2개의(복수)devise를 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AKI3/items/09f7de4abb6b4a34cde3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Rails】2개의(복수)devise를 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AKI3/items/09f7de4abb6b4a34cde3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)