de Raymond Blessed

O privire rapidă la validarea personalizată a șinelor

O privire rapida la validarea personalizata a sinelor
validare

Recent am început să lucrez cu Ruby (acum aproape 2 luni) și Ruby on Rails (puțin peste 3 săptămâni). Lucrul cu cadrul de înregistrare activă Rails este unul dintre lucrurile mele preferate despre Ruby on Rails. În această postare, vom analiza validările în Active Record, în special cele personalizate. Iată o introducere rapidă la Active Record înainte de a trece la lucrurile bune.

Active Record este una dintre pietrele de bază care alcătuiesc Ruby on Rails. Este partea cadrului care se ocupă cu bazele de date.

Este un cadru ORM (Object Relational Mapping) care vă permite să construiți o schemă pentru o bază de date folosind rubin pur și se bazează pe modelul de proiectare Active Record descris de Martin Fowler. Deci, cu Active Records, vă creați DB-ul, creați tabele, stocați, extrageți și ștergeți date folosind rubin care se traduce în SQL sub capotă.

Introducere rapidă

Să presupunem că avem un model student cu numele și prenumele proprietăților. Pentru a utiliza Active Record trebuie doar să extindem ApplicationRecord iar când alergăm rails db:migrate ne oferă declarația SQL pentru aceasta.

ad-banner

Pentru a interacționa cu baza de date, folosim metode moștenite din superclasa ApplicationRecord.

De asemenea, acceptă asociații și alte lucruri de baze de date.

Pentru o prezentare detaliată a Active Record, consultați ghidul oficial de rubin pe șine.

Validare

Deoarece scriem aplicații web pentru alți utilizatori decât noi, nu putem fi siguri că utilizatorii vor introduce întotdeauna date valide în baza de date. Pentru a aplica acest lucru, Active Record ne oferă un cadru de mini-validare care asigură prezența datelor, unicitatea anumitor câmpuri și așa mai departe.

Să ne uităm la tabelul elevilor noștri de mai sus. Nu am vrea să creăm un utilizator fără un prenume sau un nume care în prezent este posibil. Pentru a atenua acest lucru, trebuie doar să modificăm clasa noastră Student astfel:

Cu această modificare, când creați o instanță Student fără atributele prenumelui sau prenumelui, este un student nevalid și înregistrările active nu o vor persista în baza de date.

Înregistrarea activă ne oferă, de asemenea, metode pentru a verifica dacă datele noastre sunt valide sau nevalide:

Cu aceasta, nici măcar nu trebuie să încercăm să salvăm datele.

În afară de a împiedica doar persistarea datelor, Active Record oferă, de asemenea, o listă de erori care conține atributele care au validări eșuate și mesaje ușor de utilizat pentru a le prezenta utilizatorilor. Aceste erori pot fi accesate așa cum se arată în fragmentul de mai jos.

Există multe mai multe despre validare, dar nu este subiectul acestui articol. Pentru o scufundare profundă, puteți obține o explicație detaliată din capitolul ghid rubin pe șine pe validare.

Validare personalizată

Uneori, am putea dori să folosim anumite validări care sunt mai mult decât simpla asigurare a prezenței unui atribut, a lungimii, a unicității sau a oricăruia dintre ajutoarele furnizate de Active Record. Din fericire, Active Record ne permite să ne definim propriile validări personalizate, ceea ce este punctul acestui articol.

Deci, să presupunem că pentru modelul nostru de student, avem o coloană obligatorie cu numărul de înregistrare a elevilor. Trebuie completat din formularul de înregistrare (știu că acest lucru poate fi generat automat), care ar trebui să înceapă întotdeauna cu anul de înregistrare. Acum, Active Record nu oferă acest tip de validare, dar ne-a făcut posibil să o definim și să o folosim.

Există în principal două moduri de a defini propria logică de validare:

  • Validator personalizat
  • Metode personalizate

Validator personalizat

Pentru a valida utilizând un validator personalizat, trebuie doar să vă definiți logica de validare într-o clasă care se extinde ActiveModel :: Validator și implementează metoda de validare, care ia ca argument să fie validat ca argument.

Dacă validarea eșuează, acesta adaugă atributul la matricea de erori împreună cu mesajul său de eroare. Deci, în cazul nostru, vom avea RegNumValidator așa cum se vede mai jos:

Pentru a utiliza acest validator în modelul Student, folosim validates_with metodă:

Cu aceasta, atunci când un utilizator încearcă să creeze un student cu un număr de înregistrare greșit, crearea înregistrării eșuează și poate fi afișat un mesaj de eroare.

Metode personalizate

Pentru a utiliza metode personalizate pentru validare, trebuie doar să definiți o metodă de utilizat pentru validare în clasa modelului și să o numiți așa cum ați apela la oricare dintre validările încorporate – folosind validate. Folosind aceeași logică ca ceea ce am avut mai sus, modelul nostru ar arăta astfel:

Concluzie

Sper că acest articol v-a oferit cunoștințele necesare pentru a începe să explorați în special validarea Active Records și validarea personalizată. Ori de câte ori aveți o regulă de validare care nu face parte din API-ul de validare a înregistrărilor active existente, puteți scrie una singură.

Validări active ale înregistrărilor – Ghiduri Ruby on Rails
Validările sunt utilizate pentru a vă asigura că numai datele valide sunt salvate în baza dvs. de date. De exemplu, poate fi important să …guides.rubyonrails.org