Mam problem z wyświetleniem listy klientów. Za Chiny nie mogę wyświetlić klientów danego/zalogowanego użytkownika. W kontrolerze umiem wyciągnąć to za pomocą where, ale chyba w CanCan nie o to chodzi.
Nie działa to z :read, :show ani z :index. Edycja i usuwanie działają normalnie.
Mój kod:
[code]MODEL CanCan Ability.rb:
can :read, Client, :user_id => user.id
lub
can :read, Client do |client|
client.try(:user_id) == user.id
end
KONTROLER:
def index @clients = Client.all(:order => :group_id)
W Controllerze wywal w ogóle wpis. w wersji obecnej 1.6 masz z automat dla index wyciagane dane dla current_user
czyli twój controller ma wygaladac tak
load_and_authorize_resources
def index
end
i tyle
w modelu ability
dajesz
can :read, Client, :user_id => user.id
i tyle
Działa na pewno
w widoku też daj :read a nie sjow, lepiej jak tu i tu tak samo się nazywają.
Dalej jest to samo, czyli wyciąga mi wszystkie rekordy.
[code]Ability.rb
if user.role === "manager"
can :create, Client
can :read, Client, :user_id => user.id
can :update, Client do |client|
client.try(:group_id) == user.group.id
end
can :destroy, Client do |client|
client.try(:group_id) == user.group.id
end