1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

-これからポートフォリオを作成する方へ- deviseを使用したadminユーザーの作成方法

Posted at

railsチュートリアルでは、userモデルにadminカラムを追加、し、ユーザーtypeを分けて実装していました。しかし、adminユーザーは通常userと必要な機能が異なる事から、モデルで分けた方が管理しやすく、コードもスッキリします。
そこでdeviseを用いたadminユーザーの作成方法を説明します。

#●実装方法
まず、deviseでadminモデルを作成します。

$ rails g devise admin

今回、adminユーザーはseed.rbで作成するので、会員登録機能は不要です。なので、adminモデルからregisterabeをコメントアウトします。

model/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

そしてdeviseでuserも作成すると思うので、一工夫加え、ルーティングをわかりやすくします。

config/routes.rb
Rails.application.routes.draw do
 
  devise_for :admins, controllers: {
    sessions: "admins/sessions"
  }
  namespace :admins do
    resources :users, only: %i(index destroy)
    resources :questions, only: %i(index destroy)
  end

  devise_for :users, controllers: {
    sessions:      "users/sessions",
    registrations: "users/registrations",
    omniauth_callbacks: "users/omniauth_callbacks"
  }

 resources :questions

namespaseを使用し、urlを変更することにより、userとのルーティングをわかり区別することができます。
今回であれば、resouces :questionが被っていますが、namespase :adminを入れることにより
admin側: /admins/question/:id
user側: /question/:id
と、区別することが容易になります。

そして次はadminユーザーを作成します。今回はseed.rbを利用し作成します。

db/seed.rb
Admin.find_or_create_by(id: 1) do |admin|
  admin.email = "example@example.com"
  admin.password = "example"
end

こうして、rails db:seedとすることでadminユーザーを作成することができます。
作成できたかどうかは、rails c で確認すると良いでしょう。

ちなみにここで記載されているfind_or_create_by(id :1)というのは、id:1をまずfindする。なければcreateするという意味です。adminユーザーを重複して作成してしまうことを防ぐ事ができます。

#●まとめ
・adminユーザーは別モデルで管理すると良い
・namespaceを利用しルーティングを管理すると、userとの違いがわかりやすくなる
・db:seedを利用しadminユーザーを作成する。find_or_create_byを用いる事で、重複登録を防ぐ。

後は自分の好きなように管理ユーザーの機能を作成してください!以上です!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?