2011-08-06 7 views
0

私は、複数のレベルの権限を持つサイトを作成しています。私のシステムには基本的に3種類のユーザーがいます。彼らは管理者、ビジネス、消費者(通常のユーザー)です。広告サイトを構築していると言ってみましょう。Rails Design Question:コントローラを複数の特権レベルでどのように構成するのですか?

私は、レールの足場に付属するRESTful APIを備えたモデル「キャンペーン」を用意しています。企業はキャンペーンを作成できます。ユーザーは参加したいキャンペーンのみを見ることができ、管理者はすべてを行うことができます。

ここで、before_filterを適用し、特定のビューにアクセスできるユーザーの種類を厳密にチェックする方法を知っています。

ただし、特権レベルごとに固有のビューがあります。

企業はキャンペーンの洞察と分析を見ることができます。 (このキャンペーン/アナリティクスと呼ぶ) コンシューマーは、参加したすべてのキャンペーンを見ることができます。(このキャンペーン/お客様に電話しましょう) 管理者は、サイトのアクティビティを監視できる特別なビューを持っています。 (このキャンペーン/ monitor_businessesと呼ぶ)。

私のCampaignControllerには、通常のRESTfulビュー+ analytics + your + monitor_businessesがあります。もちろん、私は複数のデータモデル(キャンペーンだけでなく)を持っています。これにより、これらのデータモデルのRESTfulコントローラが本当に面倒なものになります。

どうすればよいですか? ConsumerControllerを開始しBusinessControllerを開始することを真剣に検討しており、これらのコントローラに関連するすべてのビューを配置します。これが「RESTful」原則に違反しているのかどうかはわかりませんが、私の問題に対処するためのより良いパターンが存在するかどうかを知りたいと思います。

私はあらゆる種類の提案に開放されています。

+0

どのようにユーザー認証を処理していますか? –

答えて

0

yはあなたが役割管理http://rubygems.org/gems/cancan

または私はこのことができます願っていgem install cancanを行うためのカンカン宝石を試してみてくださいいけません。

+0

私はcancanを使用しているかどうかは分かりませんが、現在は頭痛のないコントローラを残すことができます – disappearedng

+0

はい、うまくできます – Uchenna

2

ロール管理のためにCanCan gemを試してみませんか? あなたはbundlerを使ってどんな宝石と同様にインストールできます。

設定が簡単で、余分なコントローラやアクションを作成することで通常と同じボイラープレートコードを作成することができます。

ご利用になる前に、メインページのドキュメントをご覧ください。 defining what a user can do hereについての詳細は、how to check for abilities hereをご覧ください。 また、​​について読むことができるアクセス許可を適用するコントローラに1行追加する必要があります。

標準的なドキュメントが十分ではない場合、どうして始めればRailscast 192を見てください。 Ryan Batesはスクリーンキャストの作成者であり、CanCanの作成者でもあるため、CanCanを起動して実行する方法を説明しています。あなたのためにビデオがあまりにも速く動くならば、テキストバージョンhereがあります。

関連する問題