2008-08-28 5 views
2

私は内部サイト用にRuby on Railsを使用しています。サイトの異なるユーザーは、多種多様なデータにアクセスし、非常に異なるデータの観点にアクセスできます。これらの異なるクラスのユーザーの中では、アクセスのレベルが必要です。アクセスのレベルの中で私は他のクラスのユーザーからの機能を追加する必要があります。ユーザー設定をプログラミングするには

リリースされたイントラネットサイトの「バージョン1.0」では、私は一般的なクラスのユーザーを実装しました。私は今、ユーザーのアクセスをより細かく制御する必要があります。

質問はどうですか?

データベーススキーマを爆発させずに、ビューコードに<%を入力せずに、ユーザーの設定をコーディングする(マップを表示する(または表示しない)、この機能にアクセスする) >タグはどこにでもあります。

答えて

1

は別の全く異なるアプローチがacts_as_authenticatedと承認のプラグインを使用することです。このpermissions topic

3

を見てください。テーブルはプラグインによって構築されます(ユーザー,ロールおよびロール_users)。

認証プラグインは、以下の提供:DOCから

  • #permitと#permitを使用してクラスまたはインスタンスメソッド レベルのいずれかで承認をチェックする簡単な方法はありますか?

  • アプリケーション、モデルクラス、またはモデル(特定のオブジェクト)の インスタンス全体に対するロールを使用した承認。

  • 定義された役割を引き出す英語のようなダイナミックメソッド。 "user.is_fan_of angelina"や "angelina.has_fans?"、 のようなメソッドを使用できます。ここで、 'ファン'はロールテーブルでのみ定義されています。

  • 希望するレベルのデータベースの複雑さに合わせてミックスインを選択して選択します。 すべての機能について、あなたは feature_allowed%>タグであればどこでも<%でビューのコードを移植

2

「役割のテーブルオブジェクト」を使用(下記参照)ことになるでしょう。

私はあなたがそれをしたいとは思わない。提案された選択肢のどれも実行可能でないと仮定すると、少なくとも、これらのチェックをコントローラに移すことを検討してください。コントローラでは、それらをbefore_filterにリファクタリングすることができます。

「アジャイルWeb開発with Rails」(第2版の158ページ)の11.3節を参照してください。

関連する問題