0

cancanアプリケーションで一部のページを表示したいユーザーを制限するために使用したいと考えています。

だから私はこのチュートリアルでそれをやろうとしています: http://www.roberthuberdeau.com/articles/9-Blog-tutorial-part-3

Admin と Worker の 2 つの役割があり、Tasksadmins と Workers の 2 つのコントローラーがあります。

次のことを定義したい:

1) ワーカーは、ワーカーコントローラーのすべてのものを管理および表示できます。

2) 管理者は、Tasksadminscontroller のすべてのものを管理および表示できます。

正しく定義したかどうかわかりません:

class Ability
    include CanCan::Ability

    def initialize(user)
      user ||= User.new # guest user

      if user.role? :Admin
        can :manage, :tasksadmins
      elsif user.role? :Worker
        can :manage, :workers
      end
   end
end

次に実装する必要がないと思うのは、「def initialize user bit はゲスト ユーザー用です」です。ユーザーに次の方法でサインインを強制します。before_filter :authenticate_user

次に、ユーザー ロールに基づいてブログ アプリケーションへのアクセスを制限します。

何をどこに書けばいいのかわからない。

例では、彼は次のように書いています。

authorize! :edit, @article

そのため、taskadmins コントローラーに次の内容を書き込もうとしました。

authorize! :edit, @tasksadmins
authorize! :new, @tasksadmins
authorize! :index, @tasksadmins
authorize! :create, @tasksadmins
authorize! :show, @tasksadmins
authorize! :destroy, @tasksadmins

しかし、私はエラーが発生しました:undefined method 'authorize!' for TasksadminsController:Class

助けてください、私は の定義の終わりにいますcancan

4

1 に答える 1

1

この記事はかなり古いものです。githubページのCanCanドキュメント、特にこれを参照することをお勧めします。これはあなたがやりたいことのように見えますが、ドキュメントに示されているように、authorizeすべてのアクションを個別に行う必要はありません。また、これはdeviseの2番目の問題に役立つはずです。記事に示されているようにデバイスのバージョンを指定している場合は、可能であればgemをアップグレードすることを強くお勧めします。幸運を!

于 2012-12-31T20:42:50.990 に答える