LoginSignup
6
6

More than 3 years have passed since last update.

管理者機能の実装【Rails】

Last updated at Posted at 2020-12-02

はじめに

現在ポートフォリオ作成のため、補助金の記事検索・閲覧ができるアプリケーションの作成をしています。記事の投稿は全てのユーザーができるものではないため、今回、管理者ユーザーを設定することで閲覧するユーザーとの差別化を図りました。アウトプットのため本記事を投稿しています。

【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]

今回は上記の記事を参考にさせていただきました。ありがとうございました。

環境:Rails 6.0.0

1.前提

既にユーザーの管理機能はdeviseというGemを使用して、実装できていることを前提としております。

Gemfile
gem 'devise'

2.既に実装済みのUserテーブルへAdmin(管理者)を追加する

ターミナル
rails g migration AddAdminToUsers

こちらのコマンドを実行すると、、

○○○○○○○○○○_add_admin_to_user.rb
class AddAdminToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :admin, :boolean, default: false
  end
end

マイグレーションファイルが生成されるため、usersテーブルにadminカラムをboolean型のdefault: falseで追加します。

※boolean型とはtrueまたはfalseのどちらかのデータが必ず入ることが決まっている型みたいです。閲覧ユーザーの方が多いのでdefaltをfalseにしました。。。

この状態で

ターミナル
rails db:migrate

をすると、Userテーブルの中にadminカラムが追加されていました!!!

3.管理者データの追加

続きまして、管理者となるユーザーのデータを入力しました。今回はseeds.rbを使用しました。

そもそもこれまで、db/seeds.rb←これは何に使うのだろうと思っていましたが、、

db/seeds.rb
User.create!(
  first_name: '管理者',
  last_name: '太郎',
  first_name_kana: 'カンリシャ',
  last_name_kana: 'タロウ',
  email: 'admin@example.com',
  password: 'admin',
  password_confirmation: 'admin',
  state_id: 45,
  phone_number: '09012345678',
  birth_day: '2000-01-01',
  admin: true
)

このように記述して

ターミナル
rails db:seed

を行うことで、勝手にデータベース内にデータが入力されていました!!新たな発見で嬉しかったです!!!(初心者ですいません・・・)

ちなみに、first_nameやphone_numberなどは新たに追加したカラムなので、ご自身で設定したユーザー登録に必要な情報を記述するといいと思います。

このように管理者権限を追加することで、current_user.admin?などのメソッドが使用できるみたいです。

私自身の実装では、current_user.admin?を使用して、管理者にしか表示させたくないview(記事投稿画面など、、)を他のユーザーには表示させないように実装したりと、重宝させていただきました。。。。

この後の実装についても、後々投稿したいと思います。

間違っている点などありましたら、ご指摘ください!!!

6
6
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
6
6