0

私は複数のレベルの特権を持つサイトを書いています。私のシステムには基本的に3種類のユーザーがいます。それらは、管理者、ビジネス、および消費者(通常のユーザー)です。私が広告サイトを構築しているとしましょう。

そこで、Railsスキャフォールドが付属するRESTfulAPIを備えたモデル「キャンペーン」があります。企業はキャンペーンを作成でき、ユーザーは参加したいキャンペーンのみを表示でき、管理者はすべてを行うことができます。

これで、before_filterを適用して、特定のビューにアクセスできるユーザーのタイプを厳密に確認する方法がわかりました。

ただし、特権の各レベルには独自のビューがあります。

企業は、キャンペーンの洞察と分析を見ることができます。(このキャンペーン/分析と呼びましょう)消費者は参加したすべてのキャンペーンを見ることができます。(このキャンペーン/あなたと呼びましょう)そして管理者はサイトの活動を監視できる特別なビューを持っています。(これをcampaigns / monitor_businessesと呼びましょう)。

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

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

私はあらゆる種類の提案を受け入れます。

4

2 に答える 2

2

ロール管理にCanCan gem を試してみませんか? bundler を使用して、gem と同じようにインストールできます。

セットアップは簡単で、追加のコントローラーやアクションを作成する場合と同じボイラープレート コードを作成する必要がありません。

開始するには、メイン ページのドキュメントにアクセスすることをお勧めします。ユーザーができることの定義についての詳細はここにあり、能力を確認する方法はここにあります。また、アクセス許可を強制するコントローラーに 1 行追加する必要があります。ここで読むことができます。

標準のドキュメントでは始めるのに十分でない場合は、Railscast 192をご覧ください。CanCan を起動して実行する方法を示しています。Ryan Bates はスクリーンキャストの作成者であり、CanCan の作成者でもあるため、優れた情報源です。ビデオの動きが速すぎる場合は、ここにテキスト バージョンがあります。

于 2011-08-06T06:04:40.857 に答える
0

y役割管理のためにcancangemを試してはいけませんhttp://rubygems.org/gems/cancan

または、gem install cancanこれがお役に立てば幸いです。

于 2011-08-06T05:55:01.137 に答える