プログラミング初心者の勉強メモ。

あくまでメモなので、自分が忘れそうなことだけちょこちょこ書いてます。

管理者権限の機能を追加したい!

usersテーブルにadmin(=管理人)カラムを追加することで管理者権限の機能を追加してみようと思います。参考サイトはこちらから。

railstutorial.jp

機能追加にあたり、前提として以下のものを作成しております。

・usersテーブルの作成

usersテーブルにadminカラムを追加(データ型はboolean)

$rails g(=generate) migration add_admin_to_users admin:boolean

すると[db/migrate(作成日)_add_admin_to_users.rb]にこのようなファイルが。

class AddAdminToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :admin, :boolean
  end
end

このままでも良いのだが、自分で以下の部分を追記します。

class AddAdminToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :admin, :boolean, default: false
  end
end

default: falseは「default(=初期値)では管理者になれない」ということを明示しています。本来記述不要だが、書いた方がわかりやすいという理由で書くそうです。

マイグレーションの実行

$rails db:migrate

管理者データを作成[db/seeds.rb(サンプルデータ生成タスク)]で管理者を1人追加

※赤字部分は自分で決める

User.create!(name: "admin",
email: "admin@admintest.com",
password: "admintest",
password_confirmation: "admintest",
admin: true)

ラストのadmin: trueが管理者であることを明示しています。

そして再度マイグレーションの実行

$rails db:migrate

これで管理者用ユーザができた。

使用例

管理者としてログインしたときにしか表示されない部分を作ってみました。

f:id:over54:20200718224444p:plain

テーブルのカラムタイトルの部分ですが、

<% if current_user.admin? %>
<th class="text-center">ユーザ削除</th>
<% end %>

もしログインユーザーがadmin=trueならユーザ削除のカラムも表示

となっています。

これはできると作成物の幅が広がります。