"Bez parametru dependent by články v tabulce blog_articles zůstaly a zrušen by byl jen záznam v tabulce blogs."
O to by se myslím spíš měla postarat databáze(když už to umí). V příkladech používáte cizí klíče, ale nikde nenastavujete referenční integritu.
V tabulce "blogs_articles" by měl být PK (blog_id,article_id).
Díky za článek! Hnedle si s tím zkusím pohrát. Navrhuju jednu databázi, kde se to referencema hemží, tak jsem zvědav jestli z has_one, has_many, belongs_to a has_many_and_belongs_to nebudu mít mžitky :)
Ano, to máte pravdu, ale Rails pracují i s databázemi, které cizí tuto integritu neumějí. Každá to navíc dělá trochu jinak, takže právě proto se to definuje až v modelu.
V příkladech pouze ukazuji, že jde o cizí klíč, ale vlastně to není nutné. Někde na stránkách rails jsem četl, že vzhledem k Don't Repeat Yourself principu by definice integrity na dvou místech byla opakováním :-)
Jinak z has_many, atd. mám občas mžitky taky, teda spíš z objektového přístupu k db, který občas přinese "odlišné ovoce". Zjistil jsem, že databáze musím navrhovat nikoli jak jsem byl zvyklý, ale z pohledu rails, ačkoli bych to občas dělal jinak.
Ano to je fakt, že by se člověk trochu opakoval, ale u větších aplikací je myslím důležitá konzistentní databáze, nehledě na to, že se třeba časem rozhodnu použít i jiné klienty pro přístup k ní než jen rails aplikaci.
Je to smutné, když musím např:
1. zkontrolovat data javascriptem před odesláním
2. zkontrolovat v aplikaci na serveru (kdyby nebyl javascript)
3. pro jistotu ještě zkontrolovat v databázi aby byla konzistentní
Ale je mi celkem jasné, proč je to tak navrženo a když by si člověk moc vymýšlel, tak se zřejmě nějakého frameworku, který mu zjednoduší vývoj, nedočká...
Ach jo... Ruby je v módě a tak se ho každej PHP čučkař učí. Přitom je velice podobné Smalltalku o kterém vím už deset let a ten Japonec co ho vymyslel určitě šilhal po Smalltalku, ale samozřejmě si vymyslel vlastní syntaxi protože a) vymýšlet syntaxi je to nejjednodušší b) mohl se kasat že navrhnul nový "cool" revoluční jazyk.
Je to stejný "hype" jako používá Micro$oft pro svoje vykradené technologie. .NET je okopírovaná Java (syntaxe, technologie virtuálního stroje), ale v reklamních tlachání které okolo toho rozpoutali se to tak nějak zapomnělo.
Mozna znim trochu nastvane, ale nejsem... jenom me mrzi ze myslenky Smalltalku (vazby, zpravy) si privlastni nejaky sikmooky "vynalezce" a jeste s tim ma takovy uspech.
Rails jsou v Ruby a clanek je o rails. Vase poznamka by sla stejne tak pouzit na PHP, ktere je vlastne orezany Perl.
PHP "čučkařů" (jen tusim, koho tim myslite) je sice mnoho, ale i v PHP existuji lide, kteri jsou schopni delat neuveritelne objektove veci, ze by se nekdo, kdo pouziva objektove Ruby, divil. Je trochu klise o PHP mluvit negativne a masove ho pritom pouzivat. I kdyz netvrdim, ze to neni podle me trochu bastl.
Osobne nemam nic proti Smalltalku, ale nevim, proc by se nemohl nekdo inspirovat a udelat neco, s cim navic marketingove uspeje. Nakonec nikdo se netaji tim, ze Ruby vychazi z Pythonu, Smalltalku i Perlu.
ok, "marketingově"... ale myslel jsem že Open Source je víc o programátorské kvalitě než o obchodnich kecech a'la Microsoft. Jinak samozřejmě souhlasím s tím že inspirace u jiných jazyků není zakázaná, jenom tím nevzniká nic nového, staré víno v nových lahvích.
kdyz uz jsme u cuckaru: kazdej druhej cuckar si mysli, ze wm je invence autoru javy a kazdej cuckar (az na cuckarske vyjimky, ovsem) si mysli, ze historie technologii spojenych s it zacina v dobe vzniku os dos nebo spol. ms (a proto take s dosem a ostatne vsemi os, co kdy mely se spol. ms neco spolecneho, vsechno ostatni porovnava) :-P
BTW „ten Japonec“ vyvinul Ruby pro vlastni potřeby a já myslím, že si každý pro svoje potřeby může vivinout, cokoliv se mu zlíbí, třeba aspektove orientovaný FORTH nebo funkcionální assembler... :-D
Snažím sa uvádzané príklady testovať aj na databáze Oracle 9i ale táto kombinácia vykazuje značne dlhú odozvu. Neviem, či to mám pripísať nesprávne nainštalovanému/použitému driveru( v mojej inštalácii Rails-ov nebol - že by bol Oracle málo rozšírený? - stiahol som si ruby-oci8-0.1.13 ) alebo má Rails obecný problém s databázou pri veľkom počte tabuliek - okrem systémových je na databáze kde testujem asi 2000 mojich tabuliek ?