Greitas žvilgsnis į „Rails Custom“ patvirtinimą

Neseniai pradėjau dirbti su „Ruby“ (dabar beveik 2 mėnesiai) ir „Ruby on Rails“ (šiek tiek daugiau nei 3 savaites). Darbas su „Rails“ „Active Record“ sistema yra vienas mėgstamiausių dalykų apie „Ruby on Rails“. Šiame įraše mes nagrinėsime „Active Record“ patvirtinimus, ypač pasirinktinius. Čia yra greita „Active Record“ įžanga prieš pereinant prie gerų dalykų.

„Active Record“ yra vienas pagrindinių brangakmenių, sudarančių „Ruby on Rails“. Tai sistemos dalis, susijusi su duomenų bazėmis.

Tai yra ORM (Object Relational Mapping) sistema, leidžianti sukurti duomenų bazės schemą naudojant gryną rubiną ir pagrįsta Martin Fowler aprašytu „Active Record“ dizaino modeliu. Taigi, naudodami „Active Records“, kuriate savo DB, kuriate lenteles, saugote, atkuriate ir ištrinate duomenis naudodami rubiną, kuris verčiamas į SQL po gaubtu.

Greita įžanga

Tarkime, kad mes turime mokinio modelį su savybėmis vardu ir pavarde. Norėdami naudoti „Active Record“, tiesiog turime išplėsti „ ApplicationRecord“ ir, kai ją vykdome, duodame rails db:migrate jai SQL sakinį.

Norėdami sąveikauti su duomenų baze, mes naudojame metodus, paveldėtus iš „ApplicationRecord“ superklasės.

Jis taip pat palaiko asociacijas ir kitus duomenų bazių dalykus.

Norėdami gauti išsamią „Active Record“ įžangą, peržiūrėkite oficialų „ruby on bėgių“ vadovą.

Patvirtinimas

Kadangi mes rašome žiniatinklio programas ne tik mums, bet ir kitiems vartotojams, negalime būti tikri, kad vartotojai visada į duomenų bazę įves galiojančius duomenis. Norėdami tai įgyvendinti, „Active Record“ pateikia mums mini patvirtinimo sistemą, kuri užtikrina duomenų buvimą, tam tikrų laukų unikalumą ir pan.

Pažvelkime į mūsų studentų lentelę aukščiau. Mes nenorėtume sukurti vartotojo be vardo ar pavardės, kuri šiuo metu yra įmanoma. Norėdami tai sušvelninti, tiesiog turime pakeisti savo studentų klasę taip:

Atlikus šį pakeitimą, kai kuriate studento egzempliorių be vardo ar pavardės atributų, tai yra netinkamas studentas, o aktyvūs įrašai jo neišlaikys duomenų bazėje.

Aktyvus įrašas taip pat pateikia metodus, kaip patikrinti, ar mūsų duomenys yra teisingi ar neteisingi:

Tai atlikdami mes net neturime bandyti išsaugoti duomenų.

Be to, kad „Active Record“ tik užkerta kelią duomenų išsaugojimui, taip pat pateikiamas klaidų sąrašas, kuriame yra atributai, kurių nepavyko patvirtinti, ir patogūs vartotojams pranešimai. Šias klaidas galima pasiekti, kaip parodyta toliau pateiktame fragmente.

Patvirtinimo yra daug daugiau, tačiau tai nėra šio straipsnio tema. Norėdami giliai nardyti, galite gauti išsamų paaiškinimą iš rubino ant bėgių vadovo skyriaus „Patvirtinimas“.

Pasirinktinis patvirtinimas

Kartais galbūt norime naudoti tam tikrus patvirtinimus, kurie yra ne tik atributo, ilgio, unikalumo ar bet kurio „Active Record“ teikiamo pagalbininko buvimo užtikrinimas. Laimei, „Active Record“ leidžia mums apibrėžti savo pasirinktus patvirtinimus, o tai yra šio straipsnio esmė.

Tarkime, pagal mūsų „Student“ modelį turime privalomą studentų registracijos numerio stulpelį. Ją reikia užpildyti iš registracijos formos (žinau, kad tai gali būti sukurta automatiškai), kuri visada turėtų prasidėti nuo registracijos metų. Dabar „Active Record“ nepateikia tokio patvirtinimo iš dėžutės, bet leido mums jį apibrėžti ir naudoti.

Yra daugiausia du būdai, kaip apibrėžti savo patvirtinimo logiką:

  • Pasirinktinis tikrintuvas
  • Pasirinktiniai metodai

Pasirinktinis tikrintuvas

Norėdami patvirtinti naudodami pasirinktinį tikrintuvą, tiesiog turite apibrėžti savo patvirtinimo logiką klasėje, kuri pratęsia „ ActiveModel :: Validator“ ir įgyvendina patvirtinimo metodą, kuris reikalauja, kad įrašas būtų patvirtintas kaip argumentas.

Jei patvirtinti nepavyksta, jis prideda atributą prie klaidų masyvo kartu su savo klaidos pranešimu. Taigi, mūsų atveju turėsime „RegNumValidator“, kaip parodyta žemiau:

Norėdami naudoti šį tikrintuvą „Student“ modelyje, mes naudojame validates_withmetodą:

Tuo atveju, kai vartotojas bando sukurti studentą su neteisingu registracijos numeriu, įrašo kūrimas nepavyksta ir gali būti parodytas klaidos pranešimas.

Pasirinktiniai metodai

Naudoti pasirinktinius metodus tvirtinimui, jums tiesiog reikia apibrėžti metodą naudoti įteisinimo savo modelio klasę ir ją vadina, kaip jūs vadinčiau bet įmontuotu įteisinimų - naudojant validate. Naudojant tą pačią logiką kaip ir anksčiau, mūsų modelis atrodytų taip:

Išvada

Tikiuosi, kad šis straipsnis suteikė jums reikiamų žinių, kad galėtumėte pradėti tyrinėti „Active Records“ patvirtinimą ir tinkintą patvirtinimą. Kai turite patvirtinimo taisyklę, kuri nėra esamos aktyvios įrašo patvirtinimo API dalis, galite ją parašyti patys.

Aktyvūs įrašų patvirtinimai - „Ruby on Rails“ vadovai

Patvirtinimai naudojami siekiant užtikrinti, kad jūsų duomenų bazėje būtų išsaugoti tik galiojantys duomenys. Pavyzdžiui, gali būti svarbu ... guides.rubyonrails.org