Aplicati obiecte formular la ActiveModel. Obiectele formular au responsabilitatea de a decupla logica formularului de model. Va va ajuta sa va simplificati modelele.

Instalare

Adaugati aceasta linie Gemfile:

Va rugam sa va asigurati ca rulati o versiune compatibila a Ruby, a se vedea mai jos.

Exemplu rapid

Pentru a gestiona categoria si utilizatorii, puteti crea un obiect ca acesta:

class Form include ActiveForm :: Proprietati formular: nume, pe:: proprietati utilizator: titlu, pe:: categorie self.main_model =: user end

Acum, puteti face acest lucru:

user = User.new category = Category.new form = Form.new (utilizator: utilizator, categorie: categorie) form.user # returneaza user form.user == user # returneaza adevarat form.user.name # returneaza formularul zero. nume # returneaza zero form.fill_attributes (nume: ‘GCorbel’) form.user.name # returneaza ‘GCorbel’ form.name # returneaza ‘GCorbel’ form.valid? # returneaza formularul adevarat.salveaza # salveaza toate modelele si returneaza true

Exemplu fara sustinere de un ActiveModel

Daca doriti sa utilizati obiecte formular pentru a oferi validari obiectelor simple, pur si simplu omiteti argumentul on si definitia main_model dupa cum urmeaza:

class Form include ActiveForm :: Proprietati formular: nume,: titlu validates_presence_of: title end form = Form.new (nume: ‘John’) form.name # return John form.title # return nil form.valid? # returneaza fals

Folositi validari

Validarile functioneaza ca o clasa normala ActiveModel.

españolas peludas maduritas corriendose
analxxx ana marco primer anal
porno abuelas españolas follando en un crucero
porno español jovencitas viejas en orgias
incesto lesbianas peliculas eroticas gratis en español
anal interacial follando a mi hija
porno fiestas follando con mirones
videos guarros porno guarras españolas
ultimos videos faking porno obligado
xxxxporno madres haciendo pajas a sus hijos
madura se corre rajas peludas
incesto subtitulado en español ver peliculas de incesto
pajas en la playa videos incesto amateur
madre española se folla a su hijo maduras follando en español
videos porno xxx incesto el mejor video porno
peliculas españolas porno meadas gay
porno france follar abuelas
masturbaciones ultimos videos faking
moras follando sara rossi fakings
se folla a zofilia xxx

Deci, puteti face acest lucru:

clasa Form include ActiveForm :: Proprietati formular: nume, pe:: utilizator valideaza: nume, prezenta: adevarat self.main_model =: user end

Si folositi-l asa:

user = User.new form = Form.new (utilizator: utilizator) form.valid? # return false form.errors # return # <ActiveModel :: Erori: 0x007fe603816640 @ messages = {name: [“can’t be blank”]}> form.fill_attributes (nume: ‘GCorbel’) form.valid? # returneaza adevarat

Pentru a valida unicitatea sau o proprietate, puteti face acest lucru:

class Form include ActiveForm :: Form include ActiveForm :: ValidateUniqueness properties: name, on:: user validates_uniqueness_of: name,: user end

Validarea_uniquitate_of ia doi parametri, primul este proprietatea care ar trebui sa fie unica si al doilea este modelul pentru aceasta proprietate.

Salvarea formularelor

Exista doua metode de salvare a formularelor, salvare si salvare !. save va intoarce true sau false daca modelul este valid sau nu. Salvati! va returna o eroare si va reveni la toate modificarile modificate.

Puteti personaliza aceste metode adaugand un bloc ca acesta:

class Form include ActiveForm :: Proprietati formular: nume, pe:: utilizator self.main_model =: user end form = Form.new (utilizator: User.new) form.save do | f | f.user # returneaza sfarsitul utilizatorului

De asemenea, puteti suprascrie metoda de salvare astfel:

class Form include ActiveForm :: Proprietati formular: nume, pe:: utilizator self.main_model =: user def save super do user.save end end end

Aveti grija: daca logica dvs. este prea complexa, probabil ca este mai bine sa utilizati un obiect de serviciu.

are_multa relatie

Pentru a gestiona o relatie has_many, o puteti face astfel:

clasa Form include ActiveForm :: Proprietati formular: nume, pe:: categoria self.main_model =: category attr_accessor: user_ids def save super do category.users = user_ids.map {| user_id | User.find (user_id)} categorie.save end end end end

Proprietati alias

Uneori este util sa creati un alias pentru o metoda, puteti face acest lucru:

class Form include ActiveForm :: Proprietati formular: nume, pe:: categoria alias_property: category_name,: name self.main_model =: category end form = Form.new (categorie: Category.new (nume: ‘bacon’)) form.category_name # return ‘bacon’ form.category_name = ‘beef’ form.category_name # return ‘beef’

Exemplu complet

Puteti gasi un exemplu de aplicatie functionala in directorul spec / dummy.

Cerinte

Ruby 2 sau mai mare.

Contribuind

  1. Furca-l
  2. Creati-va ramura de caracteristici (git checkout -b-noua-caracteristica)
  3. Commit your changes (git commit -am ‘Add some feature’)
  4. Push to the branch (git push origin my-new-feature)
  5. Creati o noua solicitare de extragere