質問: Ruby on Rails に限定する必要はないのですが、実装方法で悩んでいます ある中学校の、イベント情報のお知らせや生徒の情報などを扱う Web アプリで、メッセージ機能や掲示板なんかもある、よくある感じのやつです。 * 校長先生 * 先生 * 保護者 * 生徒会長 * 生徒 上記のようなユーザー種別があり、それぞれに対応する処理を切り分けなければいけません。 例えば、生徒のプロフィール画面には、 * 氏名 * 生年月日 * 住所 * 趣味 といった項目があり、これらのうち「住所」はログインしているユーザーが生徒アカウントの場合非表示にする、などです。 こういった、「ユーザー種別ごとに処理を分ける」という場合どのような方法を使うのが良いのでしょうか? 現時点では、 1. ユーザー種別ごとにネームスペースを分け、それぞれコントローラーやビューを用意する 2. ユーザーごとのパーシャルを用意して、ビューの中に `case` 文を書いてレンダーするファイルをわける のどちらかかなー、と思ってますが自信がありません。お力をおかしくださいませ。 *※ このWebアプリは架空のものです*
回答: ケースバイケースですが、シンプルなRailsアプリであれば `user.teacher?` であれば `user.student?` みたいなメソッドを持たせて、viewの中で if 文とかで切り分けちゃいますね。 ``` <% unless user.student? %> <% end %> ``` そこそこルールが複雑で一元的に管理しないと将来が不安、ということであれば、CanCanCan(古い記事だとCanCan)とrolifyというgemを使う方法もあります。 * Devise + CanCan + rolify Tutorial * Rails4 + Devise + Authority + Rolifyで管理者権限付きの管理画面作成 + CanCanCanの代わりにAuthorityというgemが使われています。 ただ、僕自身はrolifyを使ったことはなくて、DeviseとCanCanCanだけで済ませることが多いです。 このあたりのgemの使い方を調べながら、ご自身のニーズに合った解決策を選択してみてください。