Aplikacja posiada model Category. Dla kilku najpopularniejszych kategorii chciałbym posiadać urlowe helpery, dokładam sobie w routes.rb:
Category.all.each do |c|
get "/ogloszenia/kategorie/:category" => "billboard#category" ,
:as => ("bb_category_" << c.name.parameterize[/^\w+/]).to_sym,
:category => c.to_param
end
wywołanie “rake routes” pokazuje między innymi:
bb_category_uslugi GET /ogloszenia/kategorie/:category(.:format) {:category=>"3-uslugi", :controller=>"billboard", :action=>"category"}
czyli wygląda na to, że wszystko gra. Problem zaczyna się gdy odpalam testy po umieszczeniu takiego “bb_category_uslugi_path” w templatach. Oczywiście wywala, że “undefined local variable or method bb_category_uslugi_path” co jest zupełnie zrozumiałe gdyż baza testowa nie posiada stworzonych obiektów Category.
-
W jaki sposób najlepiej wypełnić bazę testową przed testami? Gdy w scenariuszu ogórkowym umieszczam tworzenie kategorii w background to efekt jest taki sam. Rozumiem, że routes.rb jest przetwarzany jeszcze wcześniej. Też dla kilku testów chciałbym aby tabela kategorii była pusta na początku.
-
Czy są odpowiedniejsze sposoby na definiowanie takich specjalnych routes dla konkretnych obiektów? Alternatywą jest stworzenie ekstra helpera typu “category_path_by_name(‘uslugi’)”, ale wtedy każde wywołanie to dodatkowe zapytanie do bazy.
Ogólnie wszelkie best practices i wskazówki dla takiego przypadku mile widziane.