Routing zasobu

W pliku zasobu routes.rb mam m.in:

map.resources :databases

> rake routes databases GET /databases {:action=>"index", :controller=>"databases"} formatted_databases GET /databases.:format {:action=>"index", :controller=>"databases"} POST /databases {:action=>"create", :controller=>"databases"} POST /databases.:format {:action=>"create", :controller=>"databases"} new_databasis GET /databases/new {:action=>"new", :controller=>"databases"} formatted_new_databasis GET /databases/new.:format {:action=>"new", :controller=>"databases"} edit_databasis GET /databases/:id/edit {:action=>"edit", :controller=>"databases"} formatted_edit_databasis GET /databases/:id/edit.:format {:action=>"edit", :controller=>"databases"} databasis GET /databases/:id {:action=>"show", :controller=>"databases"} formatted_databasis GET /databases/:id.:format {:action=>"show", :controller=>"databases"} PUT /databases/:id {:action=>"update", :controller=>"databases"} PUT /databases/:id.:format {:action=>"update", :controller=>"databases"} DELETE /databases/:id {:action=>"destroy", :controller=>"databases"} DELETE /databases/:id.:format {:action=>"destroy", :controller=>"databases"}
No i zaczęły się problemy. Dlaczego zamiast edit_database jest edit_databasis? Jak zmusić RoR do prawidłowej zmiany liczby mnogiej na pojedynczą?

rails inflector / inflection.
Ta klasa i to słowo w googlu Cię interesuje.

Zanim zgłosisz buga w ticketach RoR, przypomnę że błędy/braki inflectora należy łatać we własnym projekcie (np. w environment.rb) i raczej unikać zgłaszania. Chociaż skoro zła odmiana słowa “penis” została zgłoszona, to “database” i inne słowa z podwójnym “s” w liczbie mnogiej też powinno trafić :wink:

PS. “basis” nie jest aż tak złą formą pojedynczą “bases” - “the basis we built on” itd :slight_smile: