Tuesday, March 18, 2008

Ruby on Rails 2.0.2 i inflections (polski pluralize)

Ruby posiada fantastyczną cechę jaką jest możliwość odmiany rzeczowników i na ich podstawie automatycznego tworzenia nazw tabel oraz kontrolerów. Niestety własność ta działa standardowo tylko dla języka angielskiego. Jeżeli chcemy jednak aby w naszym projekcie była możliwość posługiwania się nazwami polskimi możemy dodać nowe reguły do railsa, które umożliwią mu odmianę polskich wyrazów.

Sprawa odmiany wydaje się w railsie 2.0.2 dość trywialna. Wystarczy dodać do pliku config/initializers/inflections.rb kilka linijek. Pamiętajmy jednak, że rails do prawidłowego działania potrzebuje poprawnie zdefiniowane reguły dla języka angielskiego dlatego nie usuwajmy tych reguł metodą clear :all.

Nowe polskie rzeczowniki możemy dodawać jako rzeczowniki nieregularne i w takim przypadku rails nie protestuje i wszystkie inne funkcjonalności powinny działać poprawnie wpisujemy więc:

Inflector.inflections do |inflect|
inflect.irregular 'konto', 'konta'
end

I wywolujac "script/generate model Konto uzytkownik:string haslo:string", a następnie "rake db:migrate" w naszej bazie danych powstanie tabela konta.

Problem pojawi się jeżeli będziemy chcieli użyć naszych rzeczowników w metodzie scaffold. Domyślnie nie są generowane odpowiednie ścieżki routingu dlatego musimy to naprawić wpisując:

rake routes

Od teraz możemy cieszyć się polskimi nazwami w railsie.

No comments: