2010-07-30 7 views
12

W dokumentacji kankana to pokazuje, jak pobrać wszystkie dostępne rekordy (w http://wiki.github.com/ryanb/cancan/fetching-records) w ten sposób:Co to jest current_ability w cancan's available_by (pobieranie rekordów)?

@articles = Article.accessible_by(current_ability) 

ale co current_ability? Próbowałem przechodzącą bieżącego użytkownika, który używam do uwierzytelniania i autoryzacji, ale mam ten błąd:

NoMethodError: undefined method `conditions' for #<User:0x1092a3b90> 

jakieś pomysły co należy przekazać do accessible_by lub co się dzieje tutaj?

Odpowiedz

10

CanCan rozszerza ActionController::Base za pomocą metody current_ability, która jest klasą, którą Twój ApplicationController powinien dziedziczyć. Tak więc przykładowy kod w twoim pytaniu powinien działać tak, jak jest.

+6

Możesz także przekazać własne umiejętności, używając instancji klasy umiejętności, którą zdefiniowałeś. Klasa umiejętności to ta, która zawiera CanCan :: Ability i możesz jej użyć tak: Ability.new (current_user) –

+1

Myślę, że wielu ludzi zadało sobie to pytanie. może dokumentacja wiki powinna zostać zaktualizowana? –