Prosty system autoryzacji

Chcę zrobić prosty system autoryzacji, ale mam problemy jak się do tego zabrać.

Plan mam taki, że w ApplicationController dam :before_filter :check_permissions, w tym check_permission wszystko sobie poustawiam,kto i co może, ewentualnie w kontrolerach w ktorych nie potrzebuja autoryzacji ustawie sobie skip_before_filter dla niektorych akcji (typu index dla posts).I tutaj pojawia się moje pytanko, jak się dobrać do tego jaki kontroler i akcja zostały wywołane?

  1. Chodzi Ci o to, jak zastosować skip_before_filter dla konkretnej akcji? Jeśli tak, to jest dokładnie tak samo, jak z before_filter:
skip_before_filter :method, only: :action
  1. Właściwie dlaczego nie chcesz skorzystać z istniejących rozwiązań?
  1. Nie, chodziło mi o to jak w funkcji def check_permissions ustalić pewne działania w zależności od kontrolera/akcji dla której ten before filter był wywołany, ale już wiem, że mam do nich dostęp w params[:controller] i [:action].

  2. Co do drugiego, to takie podstawowe funkcjonalności chciałem napisac od zera, żeby rozumieć jak to działa. Pewnie nie będzie problemu podmienić tego później na coś gotowego.

  1. Rzuć okiem na to: http://railscasts.com/?tag_id=26 Railscasty są tak łopatologicznie wyjaśnione że powinieneś rozumieć dlaczego tak to jest rozwiązane a nie inaczej :wink:

[quote=doli]Chcę zrobić prosty system autoryzacji, ale mam problemy jak się do tego zabrać.

Plan mam taki, że w ApplicationController dam :before_filter :check_permissions, w tym check_permission wszystko sobie poustawiam,kto i co może, ewentualnie w kontrolerach w ktorych nie potrzebuja autoryzacji ustawie sobie skip_before_filter dla niektorych akcji (typu index dla posts).I tutaj pojawia się moje pytanko, jak się dobrać do tego jaki kontroler i akcja zostały wywołane?[/quote]
Nie rób tak, że w ApplicationController sprawdzasz jaki kontroler i akcja zostały wywołane. Nie lepiej zaimplementować domyślne działanie w ApplicationController i w kontrolerach, które zmieniają te zachowanie nadpisywać metodę?

A odpowiadając na samo pytanie - jest coś takiego jak “controller_name” lub obiekt “controller” w kontrolerze - nie pamiętam dokładnie, bo rzadko używam, ale sprawdź te 2 rzeczy.

Jest tak jak mówisz:

controller.controller_name controller.action_name