Jak rails trafia do odpowiedniej tabeli w bazie?

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 :wink:

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 :slight_smile: - 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 :slight_smile:

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 :slight_smile:

(*) 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 :slight_smile: ). 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 :slight_smile: 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.