Gyors áttekintés a Rails egyedi érvényesítéséről

Nemrég kezdtem el együtt dolgozni Ruby-val (már majdnem 2 hónapja) és a Ruby on Rails-szel (kicsit több mint 3 hét). A Rails Active Record keretrendszerrel való munka az egyik kedvenc dolgom a Ruby on Rails kapcsán. Ebben a bejegyzésben az Active Record érvényesítéseit fogjuk megvizsgálni, különösképpen az egyedi. Itt van az Active Record gyors bemutatása, mielőtt áttérnénk a jó dolgokra.

Az Active Record az egyik legfontosabb drágakő, amely a Ruby on Rails alkotja. A keretnek az a része, amely adatbázisokkal foglalkozik.

Ez egy ORM (Object Relational Mapping) keretrendszer, amely tiszta rubin felhasználásával lehetővé teszi az adatbázis sémájának felépítését, és Martin Fowler által leírt Active Record tervezési mintán alapul. Tehát az Active Records alkalmazással létrehozza a DB-jét, táblákat készít, adatokat tárol, lekér és töröl, rubin segítségével, amely fordítás alatt SQL-re változik.

Gyors bevezető

Tegyük fel, hogy van egy tanulói modellünk, amely tulajdonságokkal rendelkezik keresztnévvel és vezetéknévvel. Az Active Record használatához csak ki kell terjesztenünk az ApplicationRecord-ot, és amikor futtatjuk rails db:migrate , megadjuk az SQL utasítást hozzá.

Az adatbázissal való interakcióhoz az ApplicationRecord szuperosztályból örökölt módszereket használjuk.

Támogatja az egyesületeket és más adatbázis-anyagokat is.

Az Active Record részletes bemutatásához olvassa el a hivatalos rubin on sín útmutatót.

Érvényesítés

Mivel webalkalmazásokat írunk nem saját felhasználóknak, nem lehetünk biztosak abban, hogy a felhasználók mindig érvényes adatokat adnak-e meg az adatbázisban. Ennek kikényszerítésére az Active Record egy mini-validációs keretrendszert biztosít számunkra, amely biztosítja az adatok jelenlétét, egyes mezők egyediségét stb.

Nézzük meg diákjaink fenti táblázatát. Nem szeretnénk felhasználót létrehozni keresztnév vagy vezetéknév nélkül, amely jelenleg lehetséges. Ennek enyhítése érdekében csak módosítanunk kell a diákosztályunkat:

Ezzel a módosítással, amikor létrehoz egy diák példányt keresztnév vagy vezetéknév attribútumok nélkül, érvénytelen tanulóról van szó, és az aktív rekordok nem tartják fenn az adatbázisban.

Az aktív rekord olyan módszereket is kínál számunkra, amelyekkel ellenőrizhetjük, hogy adataink érvényesek-e vagy érvénytelenek:

Ezzel nem is kell megkísérelnünk az adatok mentését.

Amellett, hogy megakadályozza az adatok megőrzését, az Active Record hibalistát is tartalmaz, amely tartalmazza azokat az attribútumokat, amelyek sikertelen validálást és felhasználóbarát üzeneteket tartalmaznak a felhasználók számára. Ezek a hibák az alábbi kódrészletben látható módon érhetők el.

Sokkal több van az érvényesítésről, de ez nem a cikk témája. A mély merüléshez részletes elmagyarázatot kaphat a rubin on rail sínek útmutató Validálás című fejezetéből.

Egyéni érvényesítés

Előfordulhat, hogy bizonyos érvényesítéseket szeretnénk használni, amelyek nem csupán az attribútum, a hossz, az egyediség vagy az Active Record által nyújtott bármely segítő jelenlétének biztosítását jelentik. Szerencsére az Active Record lehetővé teszi számunkra, hogy meghatározzuk saját egyéni érvényesítéseinket, ez a cikk lényege.

Tehát, tegyük fel, hogy a Student modellünkhöz egy kötelező hallgatói regisztrációs szám oszlop tartozik. A regisztrációs űrlapból kell kitölteni (tudom, hogy ez automatikusan generálható), amelynek mindig a regisztrációs évvel kezdődnie kell. Most az Active Record nem biztosítja az ilyen típusú ellenőrzést a dobozból, de lehetővé tette számunkra annak meghatározását és használatát.

A saját ellenőrzési logikáját főleg két módon lehet meghatározni:

  • Custom Validator
  • Egyéni módszerek

Custom Validator

Egyéni validátor használatával történő érvényesítéshez csak meg kell határoznia az érvényesítési logikát egy olyan osztályban, amely kiterjeszti az ActiveModel :: Validator programot és végrehajtja az érvényesítési módszert, amely a rekord érvényesítését veszi igénybe argumentumként.

Ha az érvényesítés sikertelen, akkor hozzáadja az attribútumot a hiba tömbhöz a hibaüzenetével együtt. Tehát a mi esetünkben a RegNumValidator lesz az alábbiak szerint:

Ennek a validátornak a Student-modellben történő használatához a következő validates_withmódszert használjuk :

Ezzel, amikor egy felhasználó rossz regisztrációs számmal próbál diákot létrehozni, a rekord létrehozása meghiúsul, és hibaüzenet jelenhet meg.

Egyéni módszerek

Az egyéni módszerek érvényesítéséhez csak meg kell határoznia egy módszert, amelyet a modellosztályban érvényesítenie kell, és úgy kell meghívnia, mint bármelyik beépített érvényesítést - validate. A fentiekkel megegyező logikával a modellünk így néz ki:

Következtetés

Remélem, hogy ez a cikk megadta a szükséges ismereteket az Active Records érvényesítésének és az egyedi érvényesítésnek a feltárásához. Ha van olyan érvényesítési szabálya, amely nem része a meglévő aktív rekord-ellenőrzési API-nak, akkor maga is írhat egyet.

Aktív rekord-ellenőrzések - Ruby on Rails útmutatók

Az érvényesítéseket annak biztosítására használják, hogy csak érvényes adatokat mentsenek az adatbázisba. Például fontos lehet… guides.rubyonrails.org