load_and_authorize_resource through: @postable_type[/code] @postable_type zależało by od parametru przekazanego w params. Czy to dobre podejście i jak ustawić tą zmienną ?
Zmienna na etapie wykonywania się linijki load_and_authorize_resource through: @postable_type nie jest zdefiniowana, więc to działa tak, jakbyś napisał ``load_and_authorize_resource through: nil`.
Pamiętaj, że definicja klasy jest kodem normalnie wykonywanym przez rubiego. Nie znam cancana, ale może możesz zamiast symbolu przekazać blok kodu? W nim zmienna instancji będzie “pobrana” rzeczywiście w momencie wykonania odpowiedniego czegoś, a nie na etapie startowania serwera.
Problem rozumiesz: zmienna bezpośrednio wpisana w kodzie wykonującym sie podczas definicji klasy jest zupełnie inną zmienną, niż ta ustawiana dla instancji tej klasy przez jedną z jej metod w momencie obsługiwania konkretnej akcji kontrolera (czyli wtedy, gdy istnieje obiekt params).
Teraz tylko pytanie, czy oni przewidzieli taki scenariusz, którego potrzebujesz. Zazwyczaj robi się tak, że takie makra używają symbolu do znalezienia metody a nie zmiennej, więc w takich przypadkach jest łatwiej.
Ale zaraz, chwila! Przecież podajesz tu nazwę zmiennej. Dowolną! Któryś z Twoich filtrów może przecież tę zmienną dowolnie ustawić, na podstawie czegokolwiek, więc w czym problem?