"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á...