2011-07-22 3 views
2

cancan認証を持つプロジェクトをカスタマイズすることを約束しました。 私カンカンability.rbRcan cancan load_and_authorize_resourceが動作しない

if user.has_role? :super_admin 
    can :manage, :all 
elsif user.has_role? :site_admin 
    can :manage, [User, Listing] 
elsif user.has_role? :manager 
    can :manage, Listing, :user_id => user.id 
end 

私のモデルは:

ListingType belongs_to :listing

User

Listing has_many :listing_types

は今、私は新しいモデルを作成し ListingDetail belongs_to :listing

私は管理者の役割から、このページにアクセスすると、それはなぜこれが起こっているページ (私がnilのユーザーのためのログインページにリダイレクトされ、私の管理者のネームスペースのインデックスコントローラのindexアクションで) にログインするためにリダイレクト load_and_authorize_resource を持って

コントローラlisting_details

答えて

7

Listingオブジェクトに対するアクセス権のみが付与されているため、コントローラとしてListingDetailコントローラにアクセスすることはできません。唯一あなたが所有ListingsListingDetailsの権限を追加するには、管理者の権限に次の行を追加します

can :manage, ListingDetail, :listing => {user_id => user.id} 
+0

OKおかげで、今では動作します! – arivarasan

+2

チェックマークをクリックして、回答が正しいことを確認し、それを受け入れる必要があります。 – Mirko