:allow_blank<\/em> nas valida\u00e7\u00f5es que elas n\u00e3o ser\u00e3o calculadas caso o campo seja enviado vazio:<\/p>\n\r\nclass User < ActiveRecord::Base\r\n validates_presence_of :cpf\r\n validates_length_of :cpf, :is => 11, :allow_blank => true\r\n validates_numericality_of :cpf, :allow_blank => true\r\n validates_uniqueness_of :cpf, :allow_blank => true\r\n validates_as_cpf :cpf, :allow_blank => true\r\nend\r\n<\/pre>\nVoc\u00ea tamb\u00e9m pode usar o m\u00e9todo Object#with_options<\/strong> adicionado pelo Rails para agrupar as valida\u00e7\u00f5es:<\/p>\n\r\nclass User < ActiveRecord::Base\r\n validates_presence_of :cpf\r\n\r\n with_options :allow_blank => true do |v|\r\n v.validates_length_of :cpf, :is => 11\r\n v.validates_numericality_of :cpf\r\n v.validates_uniqueness_of :cpf\r\n v.validates_as_cpf :cpf\r\n end\r\nend\r\n<\/pre>\nO campo CPF \u00e9 apenas um exemplo, mas estamos sobrecarregando os nossos usu\u00e1rios frequentemente nos campos username, e-mail, password e outros.<\/p>\n
N\u00e3o exija a presen\u00e7a de campos confirma\u00e7\u00e3o<\/h3>\n
Um outro t\u00f3pico que vale a pena ser discutido sobre valida\u00e7\u00f5es s\u00e3o campos de confirma\u00e7\u00e3o. Existe a seguinte nota na documenta\u00e7\u00e3o do Rails para validates_confirmation_of<\/em>:<\/p>\n\r\nvalidates_confirmation_of :password\r\n# Nota: essa valida\u00e7\u00e3o ocorre apenas se o campo :password_confirmation n\u00e3o for nulo.\r\n<\/pre>\nE isso \u00e9 uma feature<\/strong>. Isso significa que nos seus testes ou ao criar um objeto no console, voc\u00ea n\u00e3o<\/strong> precisa passar o campo :password_confirmation<\/em>:<\/p>\n\r\nit \"should be valid with valid attributes\" do\r\n User.new(:password => \"123456\").should be_valid\r\nend\r\n<\/pre>\nSe por acaso o teste falhar, \u00e9 porque voc\u00ea adicionou a valida\u00e7\u00e3o de presen\u00e7a para o campo :password_confirmation<\/em>, que \u00e9 desnecess\u00e1ria. Como o campo :password_confirmation<\/em> estar\u00e1 presente nas views, ele sempre ser\u00e1 enviado e portanto sempre ser\u00e1 checado, justamente onde \u00e9 necess\u00e1rio.<\/p>\n","protected":false},"excerpt":{"rendered":"Uma das primeira coisas que aprendemos em Rails e que s\u00e3o de grande utilidade s\u00e3o as valida\u00e7\u00f5es do ActiveRecord. Por\u00e9m, como as valida\u00e7\u00f5es s\u00e3o muito f\u00e1ceis de adicionar e remover, temos que ter certeza que n\u00e3o estamos sobrecarregando nossos usu\u00e1rios com valida\u00e7\u00f5es. Por exemplo, supondo que estamos validando o CPF do usu\u00e1rio no cadastro e … \u00bb<\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/76"}],"collection":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=76"}],"version-history":[{"count":46,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":126,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/76\/revisions\/126"}],"wp:attachment":[{"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}