U-Yuri’s 健忘録

U-Yuri’s 備忘録

プログラミングを勉強しています。アウトプットに活用しているブログです。

【Rails】管理者用画面(お知らせ文編集ページ)を作成 gemなし

はじめに

自身で作成した'mudazero'アプリに、アップデート情報などを通知するお知らせ機能を追加したいので、管理者だけがお知らせを作成できる機能を実装したい。

大まかな流れ

  • Userがadminかどうか判断
  • adminであればお知らせ作成画面を表示することができる。そうでなければエラーになる。
  • お知らせ作成画面は新たに作成。
  • お知らせ文の格納用dbも作成。
  • 各ユーザにお知らせを見せる箇所の作成

手順

① Userテーブルにadmin(管理者)テーブルを追加する(以下の記事参照)。
【Rails】テーブルの追加(sqlite3) - U-Yuri’s 備忘録

rails cから管理者を設定(adminの列にtrueを入れる)。
railsからSQLiteに入れる方法。

irb(main):004> yuri = User.find(2) #管理者にしたい人の情報を変数に入れる。
irb(main):006> yuri.admin = true #adminをtrueにする。(この時点ではまだdbに保存されていないrailsのみ変更された)
irb(main):008> yuri.save #これでdbに保存される

管理者が複数人いる場合や、途中で管理者から外したい場合もこの方法で行う。

②viewの中にadminフォルダを作成し、その中にadmin.html.erbを作成。
% rails g controller adminでコントローラーファイルを作成。 ④管理者(admin=true)の人だけが見れるよう、app/controllers/admin_controller.rbを編集。

class AdminController < ApplicationController
  def admin
    if current_user.admin == true

      render "admin"
    else
      render file: "#{Rails.root}/public/404.html", status: 404
    end

  end
end

⑤お知らせメッセージ(タイトル、メッセージ)のdb作成

$ rails g model news title:string message:text

マイグレーションファイル作成

$ rails db:migrate

あとはdbの各機能の実装。