Know-how, előadás, regisztráció
A 4.4.5 fejezetben röviden megemlítettük a tömeges telepítés eszméjét, amely magában foglalja a Ruby változónak az értékek hash értékét:
A probléma megoldásához a Rails korábbi verziói az attr_accessible módszert használták a modell szintjén, de a Rails 4.0-ban a vezérlő szintjén az úgynevezett szigorú paraméterek használata előnyösebb. Ez lehetővé teszi, hogy meghatározzuk, mely paraméterek kötelezőek, és melyek azok, amelyek megengedettek. Ezenkívül a tiszta hash-paramák átvitelét (amint azt a fentiekben bemutatjuk) hibát fog okozni, azaz E. Most a Sails alkalmazások immár az ömlesztett alapértelmezett sebezhetőségekre vannak képesek.
Ebben az esetben azt szeretnénk, hogy a hashparaméterek rendelkezzenek az attribútummal: felhasználóval, és engedélyezzük az attribútumok nevének, e-mailjének, jelszavának és password_confirmation (de csak ezeknek) megjelenését. Ezt a következőképpen érhetjük el:
Ez a kód visszaadja a params hash verzióját, amely csak a megengedett attribútumokat tartalmazza (hibát okozhat, ha az attribútum: a felhasználó hiányzik).
E paraméterek használatának megkönnyítése érdekében rendszerint egy olyan felhasználói eljárást használunk, amelyik a user_params nevet használja, amely a params [: user] helyett a megfelelő inicializálási hash-ot adja vissza:
Mivel a user_params csak a Felhasználók vezérlőn belül használható, és nincs szükség külső felhasználókra az interneten keresztül történő megnyitáshoz, a privát kulcsszó használatával privátnak tekintjük, ahogyan azt a 7.22. (A részleteket részletesebben a 8.2.1 fejezetben tárgyaljuk.)
7.22. Szigorú paraméterek alkalmazása a létrehozás során. app / vezérlők / users_controller.rb
A 7.22 listában szereplő kóddal az érvénytelen adatok küldésének tesztjeinek meg kell haladniuk:
Hibaüzenetek regisztráláskor
Itt a hibák.full_messages objektum (amelyet röviden a 6.2.2 fejezetben láttunk) tartalmaz egy sor hibaüzenetet.
Mint a fenti konzol munkamenetben, a mentés sikertelen a 7.21 listában, a @user objektumhoz tartozó hibaüzenetek listáját állítja elő. Az üzenet megjelenítéséhez a böngészőben a hibaüzenetek részét képezik a felhasználó új oldalán, ahogy azt a 7.23. (A hibaüzenetek tesztelése jó ötlet, és ezeket a teszteket gyakorlatokként hagyjuk, lásd a 7.6 fejezetet.) Érdemes megjegyezni, hogy ez a hibajelentés csak az első kísérlet; A végleges változatot a 10.3.2. Szakasz tartalmazza.
Lista 7.23. A hibaüzenetek megjelenítésének kódja a regisztrációs űrlapon. app / views / users / new.html.erb
Vegye figyelembe, hogy a részleges 'error / messages_messages'; amely tükrözi a Sails általános konvencióját, amely előírja a részleges sablonok elhelyezését, amelyet számos vezérlőben egy külön osztott / könyvtárban kívánunk használni. Ez azt jelenti, hogy létre kell hoznunk ezt az új könyvtárat a _error_messages.html.erb részfájl mellett. A részleges rész a 7.24.
Lista 7.24. Részleges a regisztrációs űrlapra küldött hibaüzenetek megjelenítéséhez. app / views / shared / _error_messages.html.erb
Ez a részmintázat számos új Rails és Ruby konstrukciót vezet be, köztük két módszert a Rails hibaobjektumra. Az első módszer a számlálás, amely egyszerűen visszaadja a hibák számát:
Egy másik új módszer. amely (együtt üres?) egy pár egymást kiegészítő módszer egyikével:
Itt látjuk, hogy a módszer üres. amelyet a 4.2.3 fejezetben a húrok kontextusában láttunk, a Rails hibaobjektumon is működik, ami az üres objektumra igaz, és egyébként hamis. Bármelyik módszer? ez csak az ellenkezője az üresnek. Az eredmény igaz, ha van valamilyen elem és hamis. (Egyébként mindezen módszerek - számítanak, üresek és bármi? - Ruby tömbökre dolgoznak.) A 10.2 fejezetben jó alkalmazást találunk erre a tényre.)
Egy másik új ötlet a szöveg segítője pluralizálódott. Alapértelmezés szerint ez nem elérhető a konzolon, de kifejezetten engedélyezhető az ActionView :: Helpers :: TextHelper modulon keresztül. 9 Ezt találtam meg a Rails API-ban való sokszorosítással
Itt látjuk, hogy a pluralizáció egész argumentumot vesz és számot ad vissza a második argumentum többes számának megfelelő verziójával. Ennek a módszernek a középpontjában egy hatalmas inflexor van, aki tudja, hogyan lehet nagyszámú szóra (pl. Sok hibás többes számra) többszörözni a pluralitást:
Ennek eredményeképpen a kódot