tdc2016sp - rails custom validators - não se esqueça deles
TRANSCRIPT
![Page 1: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/1.jpg)
RAILS
CUSTOM VALIDATORS@marcelinol
![Page 2: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/2.jpg)
DEFAULTVALIDATORS
![Page 3: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/3.jpg)
RAILS GENERATE MODEL PERSON
NAME:STRINGEMAIL:STRING
PERSONAL_SITE:STRING
![Page 4: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/4.jpg)
# app/models/person.rb
![Page 5: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/5.jpg)
> 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](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/6.jpg)
![Page 7: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/7.jpg)
# app/models/person.rb
![Page 8: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/8.jpg)
> 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](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/9.jpg)
RAILS GENERATE MODEL COMPANY
NAME:STRINGOTHER_PARAMS:XUNDA
SITE:STRING
![Page 10: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/10.jpg)
# app/models/company.rb
![Page 11: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/11.jpg)
# app/models/company.rb
ISTO NÃO É
DRY
![Page 12: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/12.jpg)
![Page 13: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/13.jpg)
É HORA DE USAR UM
CUSTOM VALIDATOR
![Page 14: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/14.jpg)
# app/validators/url_format_validator.rb
![Page 15: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/15.jpg)
# app/models/person.rb
# app/models/company.rb
![Page 16: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/16.jpg)
> 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](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/17.jpg)
# app/models/xunda.rb
![Page 18: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/18.jpg)
if rails.too_old
end
![Page 19: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/19.jpg)
VAMOS TESTAR?
![Page 20: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/20.jpg)
![Page 21: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/21.jpg)
CARA, ISSO PODE FICAR AINDA MAIS
BONITO?
![Page 22: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/22.jpg)
![Page 23: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/23.jpg)
SIM
![Page 24: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/24.jpg)
CRIE UM VALIDATION TESTER
# spec/support/validation_tester.rb
![Page 25: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/25.jpg)
![Page 26: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/26.jpg)
# spec/support/validation_tester.rb
![Page 27: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/27.jpg)
SHIPIT.RESULTADOSDIGITAIS.COM.BR
PERGUNTAS?CONSIDERAÇÕES?
@marcelinol
![Page 28: TDC2016SP - Rails Custom Validators - Não se esqueça deles](https://reader031.vdocuments.site/reader031/viewer/2022021813/58cfd52d1a28ab13238b4cab/html5/thumbnails/28.jpg)
Obrigado