Ruby on Rails に限定する必要はないのですが、実装方法で悩んでいます

ある中学校の、イベント情報のお知らせや生徒の情報などを扱う Web アプリで、メッセージ機能や掲示板なんかもある、よくある感じのやつです。

  * 校長先生
  * 先生
  * 保護者
  * 生徒会長
  * 生徒

上記のようなユーザー種別があり、それぞれに対応する処理を切り分けなければいけません。

例えば、生徒のプロフィール画面には、

  * 氏名
  * 生年月日
  * 住所
  * 趣味

といった項目があり、これらのうち「住所」はログインしているユーザーが生徒アカウントの場合非表示にする、などです。
こういった、「ユーザー種別ごとに処理を分ける」という場合どのような方法を使うのが良いのでしょうか？

現時点では、

  1. ユーザー種別ごとにネームスペースを分け、それぞれコントローラーやビューを用意する
  2. ユーザーごとのパーシャルを用意して、ビューの中に `case` 文を書いてレンダーするファイルをわける

のどちらかかなー、と思ってますが自信がありません。お力をおかしくださいませ。

_※ このWebアプリは架空のものです_
CC BY-SA 3.0
2015-02-20T05:07:07.277
6821
2015-02-20T06:43:46.567
2015-02-20T05:30:00.640
4978
7715
question
ruby-on-rails
Rails アプリでの、ユーザー種別による処理の切り分け方法
ユーザーの権限による処理の振り分けを行えるgemとして、「CanCanCan」があるので使うと便利です。  
<https://github.com/CanCanCommunity/cancancan>

実装例  
<http://morizyun.github.io/blog/devise-cancan-rails-authorize/>
CC BY-SA 3.0
2015-02-20T06:25:39.777
6825
2015-02-20T06:25:39.777
732
6821
answer
ケースバイケースですが、シンプルなRailsアプリであれば `user.teacher?` であれば `user.student?`
みたいなメソッドを持たせて、viewの中で if 文とかで切り分けちゃいますね。

```

    <% unless user.student? %>
      <input ...>
    <% end %>
    
```

そこそこルールが複雑で一元的に管理しないと将来が不安、ということであれば、CanCanCan（古い記事だとCanCan）とrolifyというgemを使う方法もあります。

  * [Devise + CanCan + rolify Tutorial](https://github.com/RolifyCommunity/rolify/wiki/Tutorial)
  * [Rails4 + Devise + Authority + Rolifyで管理者権限付きの管理画面作成](http://qiita.com/keisukemizuno@github/items/9c079c275118fa7a0f36)  
  

    * CanCanCanの代わりにAuthorityというgemが使われています。
  

ただ、僕自身はrolifyを使ったことはなくて、DeviseとCanCanCanだけで済ませることが多いです。

このあたりのgemの使い方を調べながら、ご自身のニーズに合った解決策を選択してみてください。
CC BY-SA 3.0
2015-02-20T06:43:46.567
6827
2015-02-20T06:43:46.567
85
6821
answer