Vlákno názorů k článku Ruby on Rails: Blog poprvé od Whit - "Bez parametru dependent by články v tabulce blog_articles...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 12. 2005 2:08

    Whit (neregistrovaný)
    "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 :)
  • 2. 12. 2005 10:33

    mig (neregistrovaný)
    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.
  • 2. 12. 2005 12:28

    Whit (neregistrovaný)
    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á...