0

したがって、製品コントローラーの上部に次を配置した後:

  authorize_actions_for(Product)

...そしてこれを私のProduct.rbの一番上に:

  resourcify
  include Authority::Abilities

...そしてこれを私の User.rb の一番上に

  rolify
  include Authority::UserAbilities

application_authorizer.rb から、このルールに従うことができました。

def self.default(adjective, user)
  user.has_role? :admin
end

言い換えれば、管理者ユーザーだけが何らかの方法で製品に関与できます。

しかし、次のようなproduct_authorizer.rbを作成すると

class ProductAuthorizer < ApplicationAuthorizer
  def self.creatable_by?(user)
    user.has_role? :admin
  end

  def self.updatable_by?(user)
    user.has_role? :admin
  end

  def self.deletable_by?(user)
    user.has_role? :admin
  end
end

私はルールが守られているのを見ていませんでした。管理者以外のユーザーがまだ製品の表示アクションにアクセスできないことがわかりました。上記の場合、これは許可されるべきではありませんか?

これをProduct.rbに追加してみました:

self.authorizer_name = 'StyleAuthorizer'

app_app.rb のメインルールもコメントアウトしてみました

#def self.default(adjective, user)
# user.has_role? :admin
#end

...しかし、まだ栄光はありません

4

1 に答える 1

1

Authority のソース コードdefaultで最も基本的なものは、常に false を返します。そのため、メソッドで明示的に非管理者を許可しない限り、非管理者はショー ページにアクセスできません。self.readable

ファイルにある他のメソッドを削除しproduct_authorizer.rb(それらは必要ありません)、それらを次のように置き換えます。

def self.readable_by?(user)
  true
end
于 2013-04-19T14:20:31.843 に答える