View-ba egyébként sem illik DB lekérdezéseket tenni, de az ő megoldása mindent visz szerintem azzal, hogy külön kérdezi le a kapcsolódó objektumokat.
További finomság, hogy az illető oktatja is a Rails-t, hosszú évek óta...
Újabb példa amelyen nyoma sincs a hosszú évek tapasztalatának amellyel saját állítása szerint bír az illető:
Ilyesmiket csinált minden lekérdezésben:
User.find(:first, "login = '#{params[:name]}' AND password = '#{params[:password]}'")
Ez a módszer az összes Rails-es könyvben és weboldalon mint elrettentő példa szerepel, mivel biztonsági rés. Ahhoz, hogy valaki ezt a hibás megoldást jó messziről elkerülje még végig sem kell olvasni egy Rails-es könyvet sem, mert rögtön az elején fel szokták erre hívni a figyelmet.
Helyes (és biztonságos) megoldás:
User.find(:first, :conditions => ["login = ? AND password = ?", params[:name], params[:password] )
Ha találkoztatok ti is hasonló hajmeresztő megoldásokkal Rails-es munkátok során, nyugodtan írjátok itt ki magatokból, ahogy én is tettem. ;-)
Talán kezdő Rails-eseknek hasznos lehet, a többiek pedig legalább megnyugodnak, hogy más is találkozik ennyire "profi" munkával.
- MrPrise blogja
- A hozzászóláshoz be kell jelentkezni
- 887 megtekintés
Hozzászólások
Bár csak futólag volt dolgom Rails-szel (1-2 hétig játszottam vele), de ez azért durva.
Ilyen amikor a hozzá nem értés magabiztossággal párosul :(
- A hozzászóláshoz be kell jelentkezni
+ szorgalommal ;-)
Eszembe jutott egy másik gyöngyszem. Egy helyen egy record szöveges mezőjét a szerkesztő formra rejtett mezővel kipakolta (!), aztán az elküldött form feldolgozásakor ezzel update-lte az adott rekordot.
Mikor kérdeztem, hogy mégis ezzel mi volt a célja, azt felelte, hogy így nem kell újra kiolvasni a DB-ből az értéket... Ezen azóta is gondolkozok, hogy hogyan jutott ez az eszébe...
Egyébként megkérdeztem a mestert minden ilyen húzásáról, hogy magyarázza már el miért ezt a megoldást választotta, mert én a kevés tudásommal nem értem ezeket a profi megoldásokat (szerény ember vagyok ;-)). Ezekre a kérdésekre sosem adott értelmes választ. Egyik alkalommal amikor már sokadszorra próbáltam meg kihúzni belőle értelmes választ, azt mondta, hogy a programozás bonyolult dolog, lehet hogy az ő megoldása nem tökéletes, lehet hogy én jobban tudnám megoldani, de a lényeg, hogy működik ;-)
Mondtam neki, hogy ez szép, de azért van némi különbség a szar, de azért működő és a jó és működő kód között.
- A hozzászóláshoz be kell jelentkezni
Szerintem ne vitatkozz hülyékkel. A hülyék két ismérve, hogy nem lehet meggyőzni őket róla, hogy hülyék (rekurzív definíció!:) továbbá ha részletekbe mész, akkor lehúznak a szintjükre és ott lenyomnak a rutinjukkal. Felesleges időpazarlás csupán.
-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-
- A hozzászóláshoz be kell jelentkezni