CHodzi mi o typowy ksiązkowy przykład .Niestety dopiero zaczynam przygode z railsem i nie rozumiem tego motywu . Jest sobie baza “depot_development” ,w niej tabela “products” ,następnie generuje " scaffold Product Admin" i rails juz wie skąd ma pobrać dane .Nie rozumiem .Przeciez w tej bazie moze być wiele tabel a on pobrał tą konkrętną . Czy chodzi tu o związek products = Product ??
Railsy potrafią liczbę pojedyńczą zamienić na mnogą i na odwrót.
product -> products, person -> people
[quote=drogus]Railsy potrafią liczbę pojedyńczą zamienić na mnogą i na odwrót.
product -> products, person -> people[/quote]
Co jest zreszta zgodne z teoria baz danych, gdzie tabele powinny byc nazywane w liczbie mnogiej
a jak to się ma gdy urzyjemy jako nazwe tabeli słowo w języku polskim ? Czy to jest nie wskazane ? Czy używanie wyrazów angielskich jest jedną z zasad RoR ? Jesli nie to wciąz nie rozumiem jak rails trafia do konkretnej tabeli .
Gdy slowo nie istnieje w slowniku dodane jest s tzn z tabela zrobi tabelas (chyba, ze powiesz mu inaczej).
Jedna z zasad dobrego programisty powinno byc konsekwentne uzywanie jezyka angielskiego w kodzie zrodlowym, rowniez w komentarzach.
W przypadku gdy uzywamy innych nazw tabel mozna wskazac raislowi tabele dla danego modelu.
W definicji obiektu modelu piszemy :
set_table_name “tabela”
Mozna tez np wymusic klucz glowny :
set_primary_key “tab_id”
i sekwencje
set_sequence_name “tab_seq”
Gorzej jest generatorami bo generator scaffold nie pozwala na etapie generowania na zmiane nazwy tabeli ;/
PC
Nalezy zawsze i wszedzie uzywac angielskiego! Wyobraz sobie prace z rails gdyby nazwy metod byly po dunsku - oczywiscie nikt nie mogl DHH tego zabronic ale do teraz siedzialby sobie sam ze swoim frameworkiem, chocby nie wiem jak cudownym (a tez go nie opublikowal z dobroci serca - popularne frameworki open-source to niezly market) (*).
Reguly pluralizacyjne mozna dodawac w environment.rb
# Add new inflection rules using the following format
# (all these examples are active by default):
# Inflector.inflections do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
Mozna tez wylaczyc pluralizacje tabel w environment.rb (ne zalecane!)
config.active_record.pluralize_table_names = false
msciwoj pokazal jak nalezy walczyc z tzw. “legacy systems” i innymi wymaganiami niefunkcjonalnymi
W przyp tzw. “uncountable nouns” (Rails zostawia je w spokoju, ale to chyba tez nie najlpsze rozwiazanie) proponuje:
News (a piece of news): NewsItem - news_items, NewsPiece - news_pieces
Rice (a grain of rice): RiceGrain - rice_grains
Money: MoneyUnit - money_units, MoneyAmount - money_amounts
itd.
Z Rails nie nalezy walczyc
(*) pomijam, ze Rails w obecnej postaci to zasluga calego zespolu ludzi i masy kontrybutorow.
Oczywiście zgadzam się z tymi regułami . Jesli chodzi o angielski ,faktycznie łatwiej przeglądać kod zródłowy , i jakoś nawet ładniej wygląda metoda o nazwie “delete” niz “usuń” . I tak z ciekawości czy te reguly pluralizacyjne są cechą charakterystyczną dla railsa i unikalne , czy może zaporzyczone z innego języka programowania ? Bo prawde mówiąc mimo iz wielu tych języków nie znam to mimo to takie rozwiązanie mnie zaskoczyło .
OT : Pozwole se zadać jeszcze jedno pytanie.Akurat w tym wątku by nie zaśmiecać niepotrzebnie forum, a wielu odpowiedzi się nie spodziewam (bo pewnie pytanie jest głupie i kwalifikuje sie do kasacji ). No więc mam się stawić na praktyke w pewnej firmie ,i pracodawca telefonicznie poprosił mnie bym się zainteresował ruby a dokładniej railsem mimo iz w CV nie uwzględniłem takiej wiedzy( bo jej nie miałem ) . No to se czytam agile web development ,w miedzy czasie troche poćwiczyłem ruby ( mam doswiadczenie z j2se wiec z ruby szybko pochwyciłem) .I teraz pytanie jakich wymagań od pracodawcy mam sie spodziewać na początek jesli czas od rozmowy do spotkania to tylko tydzień (tym bardziej iż ta praktyka ma być traktowana jakoby okreś próbny ) .Wogóle jakie zadania narzuca się początkującemu programiście bez doświadczenia .Z góry dzięki za odpowiedz .
Programistow sprawdza sie pod katem analitycznego myslenia (algorytmy - rozwiazywanie problemow) - zazwyczaj nie ze znajomosci konkretnego jezyka (nauka jezyka to proces wtorny i jezeli ktos sie do programowania nadaje uczy sie nowego bardzo szybko).
Dodatkowo zazwyczaj podstawowe zagadnienia dotyczace programowania obiektowego.
Mysle, ze kilka zagadnien zwiazanych z SQL.
Jezeli masz poznac Ruby to poczytaj o Ruby-way czyli wywolaniach blokow np some_array.each {|element| element.do_smth}, 5.downto, Railsowe dynamiczne findery SomeModel.find_by_some_field_from_db() i tego typu miodnosciach.