はじめに
自身で作成した'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の各機能の実装。