2011-07-22 80 views
2

我承諾定製一個項目,該項目具有cancan身份驗證。 我的康康舞ability.rbRails 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 

我的模型:

User

Listing has_many :listing_types

ListingType belongs_to :listing

現在我創建了一個新的模式ListingDetail belongs_to :listing

控制器listing_details具有load_and_authorize_resource 當我訪問來自經理的角色這個頁面,它重定向到登錄頁面 (在我的管理命名空間的指數控制器的索引操作重定向我登陸了零用戶頁面) 爲什麼發生這種情況?

回答

7

作爲管理員,您不能訪問ListingDetail控制器,因爲您只有被授予Listing對象的權限。要爲ListingDetails只在Listings你自己添加權限,以下內容添加到您的管理員權限:

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

好,謝謝,現在它的作品! – arivarasan

+2

您應該點擊複選標記以確認答案是否正確,然後您接受答案。 – Mirko