28
RAILS CUSTOM VALIDATORS @marcelinol

TDC2016SP - Rails Custom Validators - Não se esqueça deles

Embed Size (px)

Citation preview

Page 1: TDC2016SP - Rails Custom Validators - Não se esqueça deles

RAILS

CUSTOM VALIDATORS@marcelinol

Page 2: TDC2016SP - Rails Custom Validators - Não se esqueça deles

DEFAULTVALIDATORS

Page 3: TDC2016SP - Rails Custom Validators - Não se esqueça deles

RAILS GENERATE MODEL PERSON

NAME:STRINGEMAIL:STRING

PERSONAL_SITE:STRING

Page 4: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/person.rb

Page 5: TDC2016SP - Rails Custom Validators - Não se esqueça deles

> p = Person.create(name: 'Nome', personal_site: 'http://pudim.com.br')

(0.2ms) begin transaction => (...) (0.1ms) rollback transaction => (...)

> p.errors => #<ActiveModel::Errors:0x007fa06fd7c370 @base=#<Person id: nil, name: "Nome", email: nil, personal_site: "http://pudim.com.br", created_at: nil, updated_at: nil>, @messages={:email=>["can't be blank"]}>>

Page 6: TDC2016SP - Rails Custom Validators - Não se esqueça deles
Page 7: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/person.rb

Page 8: TDC2016SP - Rails Custom Validators - Não se esqueça deles

> p = Person.create(name: 'Nome', email: '[email protected]', personal_site: 'xunda')

(0.2ms) begin transaction => (...) (0.1ms) rollback transaction => (...)

> p.errors => #<ActiveModel::Errors:0x007fa06ff84618 @base=#<Person id: nil, name: "Nome", email: "[email protected]", personal_site: "xunda", created_at: nil, updated_at: nil>, @messages={:personal_site=>["Formato de site inválido"]}>>

> p = Person.create(name: 'Nome', email: '[email protected]', personal_site: 'xunda')

(0.2ms) begin transaction => (...) (0.1ms) rollback transaction => (...)

> p.errors => #<ActiveModel::Errors:0x007fa06ff84618 @base=#<Person id: nil, name: "Nome", email: "[email protected]", personal_site: "xunda", created_at: nil, updated_at: nil>, @messages={:personal_site=>["Formato de site inválido"]}>>

Page 9: TDC2016SP - Rails Custom Validators - Não se esqueça deles

RAILS GENERATE MODEL COMPANY

NAME:STRINGOTHER_PARAMS:XUNDA

SITE:STRING

Page 10: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/company.rb

Page 11: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/company.rb

ISTO NÃO É

DRY

Page 12: TDC2016SP - Rails Custom Validators - Não se esqueça deles
Page 13: TDC2016SP - Rails Custom Validators - Não se esqueça deles

É HORA DE USAR UM

CUSTOM VALIDATOR

Page 14: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/validators/url_format_validator.rb

Page 15: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/person.rb

# app/models/company.rb

Page 16: TDC2016SP - Rails Custom Validators - Não se esqueça deles

> p = Person.create(name: 'Nome', email: '[email protected]', personal_site: 'xunda')

(0.2ms) begin transaction => (...) (0.1ms) rollback transaction => (...)

> p.errors => #<ActiveModel::Errors:0x007fa06ff84618 @base=#<Person id: nil, name: "Nome", email: "[email protected]", personal_site: "xunda", created_at: nil, updated_at: nil>, @messages={:personal_site=>["Formato de site inválido"]}>>

Page 17: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# app/models/xunda.rb

Page 18: TDC2016SP - Rails Custom Validators - Não se esqueça deles

if rails.too_old

end

Page 19: TDC2016SP - Rails Custom Validators - Não se esqueça deles

VAMOS TESTAR?

Page 20: TDC2016SP - Rails Custom Validators - Não se esqueça deles
Page 21: TDC2016SP - Rails Custom Validators - Não se esqueça deles

CARA, ISSO PODE FICAR AINDA MAIS

BONITO?

Page 22: TDC2016SP - Rails Custom Validators - Não se esqueça deles
Page 23: TDC2016SP - Rails Custom Validators - Não se esqueça deles

SIM

Page 24: TDC2016SP - Rails Custom Validators - Não se esqueça deles

CRIE UM VALIDATION TESTER

# spec/support/validation_tester.rb

Page 25: TDC2016SP - Rails Custom Validators - Não se esqueça deles
Page 26: TDC2016SP - Rails Custom Validators - Não se esqueça deles

# spec/support/validation_tester.rb

Page 27: TDC2016SP - Rails Custom Validators - Não se esqueça deles

SHIPIT.RESULTADOSDIGITAIS.COM.BR

PERGUNTAS?CONSIDERAÇÕES?

@marcelinol

Page 28: TDC2016SP - Rails Custom Validators - Não se esqueça deles

Obrigado