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?
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
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