私はアクティブな管理者 (devise が含まれています) を使用しており、cancan を使用してロールを設定しました。私は注文モデルを持っています。いくつかの役割を設定しています。すべてのユーザーの注文インデックス全体を表示できる特定の役割が必要です。次に、特定のユーザーが他のユーザーの注文にアクセスせずに自分の注文のみを表示する必要があります。
私の注文コントローラーにはこれがあります...
scope_to :current_user, :unless => proc{ current_admin_user.admin? }
ドキュメントからその海峡を取りましたが、インデックス内のすべての注文ではなく、管理者の注文のみを表示しています。
これが私の能力モデルです
class Ability
include CanCan::Ability
def initialize(user)
return if user.nil? #non logged in user can use this.
if user.admin?
can :manage, :all
end
if user.sales?
can [:create, :update] [Order, Customer]
can :read, :all
cannot :destroy, :all
end
if user.production?
can [:create, :update] [Order, Customer]
can :read, :all
cannot :destroy, :all
end
if user.art?
cannot :create, :all
can :read, :all
can :update, Order
cannot :destroy, :all
end
if user.broker?
can [:index, :create, :edit, :update, :read], Order, :id => user.id
can [:index, :create, :edit, :update, :read], Customer, :id => user.id
cannot :destroy, :all
end
if user.shipping?
cannot :create, :all
can :read, :all
can :update, Order
cannot :destroy, :all
end
end
end