2011-01-20 17 views
5

Zmieniam niektóre z moich niestandardowych akcji CanCan w klasie Umiejętność, aby używać bloków zamiast tylko skrótu, ale teraz przestały one faktycznie ograniczać dostęp. Dziwne jest to, że wbudowane działania takie jak: zarządzaj i: twórz, itp., Nadal działają dobrze z blokami.Niestandardowe akcje CanCan, które nie działają z blokami

Jest to jeden z przykładów:

OLD

# this one works 
can :share, Project, :user_id => user.id 

NEW

# this one doesn't work 
can :share, Project do |project| 
    project.users.exists?(user) 
end 

Każdy napotkasz ten problem wcześniej?

Odpowiedz

1

Nie mogę powiedzieć wiele o twoim niepożądanym zachowaniu, ale prawdopodobnie nie powinieneś zmieniać haseł, by blokować, ponieważ te skróty dają ci możliwość pobierania zapisów. Przeczytaj uważnie this article w wiki CanCan.

+0

Uwierz mi, nie chcę używać bloków, ale wydaje mi się, że to jedyny sposób, żeby to zrobić w moim przypadku. Przeniosłem się z relacji jeden do wielu między projektami i użytkownikami na wiele do wielu, więc teraz muszę sprawdzić wszystkich użytkowników w projekcie, a nie tylko jednego. – Matt

+0

Hmm, spróbuj użyć debuggera i zobacz, co dzieje się w CanCan podczas sprawdzania zdolności. Lub otwórz i edytuj pliki gem cancan na twoim systemie plików i zobacz, co zostanie przekazane przez wyrzucenie zmiennych. W ten sposób pozostaję na ścieżce, kiedy nie mogę myśleć o niczym innym. Oczywiście przywróć pliki;) – Mirko

Powiązane problemy