0

わかりましたので、 acl9 を配置して機能させ、これまでのアプリ構造を以下に示します。

地域 (ある) 場所 (売上がある)。売り上げは重要ではありません。基本的には、各場所に表示される投稿だけです。

また、役割に基づいて制限および許可できる acl9 と統合されたユーザーもいます。

私がする必要があるのは、会社を作成し、特定の会社に対して作成されたユーザーに、その会社内の地域と場所へのアクセスのみを許可することです。次に、アクセス権が与えられた場所にのみアクセスできる、各企業が作成できるユーザーが必要になります。

私の質問は、作成されたユーザーを特定のセクションに動的に制限する方法がわかりません。つまり、管理者用のインターフェースです。いくつかのアプローチを想像できますが、最良のアプローチについてのアドバイスを探しています。

4

1 に答える 1

1

「has_role?」をオーバーライドできます。ユーザーのためのメソッド。

class User < ActiveRecord::Base
    def has_role?(role_name, obj=nil)
        # Your code
    end
end

オブジェクトタイプが「地域」または「場所」の場合、ユーザーの会社を確認し、地域が適切であればアクセスを許可します。それ以外の場合は、「スーパー」と呼びます。ACL9 にデフォルト値を取得させます。

それはあなたに次のようなものを与えるでしょう:

class User < ActiveRecord::Base
    def has_role?(role_name, obj=nil)
        super unless obj.class == Region or obj.class == Location
        return company.region == obj if obj.class == Region
        return company.location == obj if obj.class == Location
    end
end

実装の提案は 1 つだけです。それらの数はほぼ無限にあります。そして、私はそれが最高のものだとは決して言いませんでした。

于 2009-10-19T15:48:30.067 に答える