#はじめに
現在ポートフォリオ作成のため、補助金の記事検索・閲覧ができるアプリケーションの作成をしています。記事の投稿は全てのユーザーができるものではないため、今回、管理者ユーザーを設定することで閲覧するユーザーとの差別化を図りました。アウトプットのため本記事を投稿しています。
【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]
今回は上記の記事を参考にさせていただきました。ありがとうございました。
環境:Rails 6.0.0
#1.前提
既にユーザーの管理機能はdeviseというGemを使用して、実装できていることを前提としております。
gem 'devise'
#2.既に実装済みのUserテーブルへAdmin(管理者)を追加する
rails g migration AddAdminToUsers
こちらのコマンドを実行すると、、
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←これは何に使うのだろうと思っていましたが、、
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(記事投稿画面など、、)を他のユーザーには表示させないように実装したりと、重宝させていただきました。。。。
この後の実装についても、後々投稿したいと思います。
間違っている点などありましたら、ご指摘ください!!!