2012-02-29 5 views
1

管理者ユーザーがアカウント上の標準ユーザーが実行できるほとんどすべての操作を制御できるようにしたいと考えています。グループのアクセス許可を作成して管理する場合は、100行以上のブール値を持つ巨大なテーブルを持つ方がよいでしょうか、データベースのテキストフィールドに格納されているハッシュにすべてのアクセス許可を格納する方が良いでしょうか?彼らがすることができないものだけを保管するのだろうか?または彼らができることは何ですか? (どちらのリストが最も小さいのですか?)私は自分のレールアプリでグループ権限を実装したいと思っています。最も効率的な方法は何ですか?

ウェブアプリケーションでこれを行うための標準的なアプローチはありますか?

私が保存したいもののいくつかの例:

can_delete_object?
can_edit_object?
can_create_object?
can_delete_minions_object?
can_delete_managers_object?

私は本当にcan_が好きですか? can-canが使用できる構文。 Can-canは、何かを行うための関数を定義する以外のものだったらすばらしいでしょう。これらのブール値をすべて格納することに加えて、私はまだ終わるかもしれません。グループレベルのアクセス権をオーバーライドするアカウントレベルのアクセス許可があるためです。

答えて

0

これは、アクセス許可が正確に何かに依存しているか、おそらくCanCanのようなものがあなたの後ろにありますか?

https://github.com/ryanb/cancan

あなたがそうでない権限のいくつかを記述することができますか?

+0

私はcancanを見てきましたが、DBベースではありません。それはすべての方法です...と私は最終的にメソッドの束を使用する必要があります.. so私はこれを見るかもしれません...しかし、私とあなたの/ libフォルダに移動します。私はいくつかの例を追加します。 – NullVoxPopuli

1

[編集] - コードが明確にビット

私は権限のグループのいずれかの種類がある場合は、あなたが本当にもう一度カンカンをチェックアウトするべきだと思います(つまり、同様の権限を持つ管理者、手下にグループのユーザー...と

class Ability 
    include CanCan::Ability 

    def initialize(user) 

    # All registered users can edit their own objects 
    can :manage, [Object], :user_id => user.id 

    # Different roles 
    if user.moderator? 
     can :delete, [Object], :user_id => user.minion.id 
    elsif user.admin? 
     can :delete, [Object], :user_id => user.manager.id 
    end 
    end 
end 
+0

私はこれが好きですが、最終的にアカウントの管理者は自分のアカウントのgorupsの権限をカスタマイズできるようになります。 – NullVoxPopuli

1

HereはRubyの認証GEの素敵なリストである:ちょうど相続人のdbの代わりに、能力の全体ハッシュ)

能力クラスがあなたの状況でどのように見えるかの例を、そのフィールドを保存ミズ。

私はCanCanとacl9を徹底的に使っており、他のいくつかを見直しました。私はCanCanを使用することについての勧告に同意しますが、ユーザー、ロール、およびグループに割り当てられた権利管理を必要とする複雑なアプリケーションでacl9 gemの成功もありました。

+0

私が宝石を持っている最大の問題は、管理者に許可をカスタマイズさせる必要があるということです。しかし、ニースリスト。 – NullVoxPopuli

+0

ああ、そうだ。私は、管理者がそれらの権限を制御できるようなアクションにカスタム権限をマップしたカスタムRailsアプリを開発しました。しかし、この機能をサポートしていて何も見つけられなかった宝石を見つけようと重大な調査をしました。 https://github.com/berkmancenter/zone1はレポです。 –

関連する問題