Rails cancan load_and_authorize_resource не работает - PullRequest
2 голосов
/ 22 июля 2011

Я взял на себя обязательство настроить проект, в котором есть аутентификация cancan. мой канкан ability.rb

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 когда я захожу на эту страницу из роли менеджера, она перенаправляется на страницу входа (в действии index моего контроллера пространства имен администратора я перенаправлен на страницу входа для nil-пользователя) почему это происходит?

1 Ответ

7 голосов
/ 22 июля 2011

Вы не можете получить доступ к контроллеру ListingDetail в качестве менеджера, поскольку вам предоставлены разрешения только для объекта Listing. Чтобы добавить разрешения для ListingDetails только для принадлежащего вам Listings, добавьте следующее к разрешениям вашего менеджера:

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