<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Herminio Torres &#187; Regex</title>
	<atom:link href="http://www.herminiotorres.com/blog/category/regex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.herminiotorres.com/blog</link>
	<description>Ruby helps programmers have more fun!</description>
	<lastBuildDate>Wed, 21 Jul 2010 22:32:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Rails: ActiveRecord::Validations para validar o formato e a veracidade dos e-mail</title>
		<link>http://www.herminiotorres.com/blog/2009/08/20/rails-activerecordvalidations-para-validar-o-formato-e-a-veracidade-dos-e-mail/</link>
		<comments>http://www.herminiotorres.com/blog/2009/08/20/rails-activerecordvalidations-para-validar-o-formato-e-a-veracidade-dos-e-mail/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 20:53:05 +0000</pubDate>
		<dc:creator>Herminio</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Regex]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Format]]></category>
		<category><![CDATA[Plugin Email_Veracity]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[Validations]]></category>

		<guid isPermaLink="false">http://www.herminiotorres.com/blog/?p=72</guid>
		<description><![CDATA[Todos nós sabemos que o Rails tem validações prontas para serem utilizadas. Isso se dá ao fato da sua classe de herdar do ActiveRecord. Uma maneira bastante utilizada é validar o formato de um email utilizando expressões regulares e tem o rubular para fazer testes desses matchers. Assim: class Person &#60; ActiveRecord::Base validates_format_of :email, :with [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Todos nós sabemos que o <a href="http://api.rubyonrails.org/" target="_blank">Rails</a> tem validações prontas para serem utilizadas. Isso se dá ao fato da sua classe de herdar do <a href="http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html" target="_blank">ActiveRecord</a>.</p>
<p style="text-align: justify;">Uma maneira bastante utilizada é validar o formato de um email utilizando <a href="http://guia-er.sourceforge.net/" target="_blank">expressões regulares</a> e tem o <a href="http://www.rubular.com/" target="_blank">rubular</a> para fazer testes desses matchers. Assim:</p>
<pre>class Person &lt; ActiveRecord::Base
    validates_format_of :email,
                        :with =&gt; /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end</pre>
<p style="text-align: justify;">Bem, com isso conseguimos nossa validação de um formato mas não está 100% perfeita, pois permite que o usuário possa digitar um email não valido passando apenas no <a href="http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002168" target="_blank">format</a>, por exemplo:</p>
<pre>#
# email invalido pois não tem nenhum servidor de email que responda por gmail.com em vez de gmail.com
#
alguma_coisa@gmaio.com</pre>
<p style="text-align: justify;">Por isso iremos utilizar o plugin <a href="http://github.com/heycarsten/email-veracity/tree/master" target="_blank">Email-Veracity</a>. E vamos melhorar a nossa validação, basta ir na pagina do <em>Email-Veracity</em> e fazer o download do plugin para a pasta <em><span style="text-decoration: underline;">vendor/plugins/</span></em> no seu projeto.</p>
<pre>require 'email_veracity'

class Person &lt; ActiveRecord::Base
    validates_format_of :email,
                        :with =&gt; /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
                        :if =&gt; :is_a_valid_email?

    def is_a_valid_email?
        address = EmailVeracity::Address.new("#{self.email}")
        address.valid?
    end
end</pre>
<p style="text-align: justify;">Bem, agora podemos verificar se é um email 100% validado, onde fazemos um <a href="http://blog.areacriacoes.com.br/2008/9/18/include-require-load-e-extend-em-ruby" target="_blank"><em>require</em></a> no <em>modulo</em> de <em>email_veracity</em> e incluimos um <em>if </em>no <em>validates_format_of </em>que faz uma chamada ao método <em>is_a_valid_email?</em> se esse método retorna <em>true</em> faz a validação se retorna <em>false</em> não valida, podemos notar que o método implicitamente da um <em>return</em> em <em>address.valid?</em> bem é isso espero que tenham gostado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.herminiotorres.com/blog/2009/08/20/rails-activerecordvalidations-para-validar-o-formato-e-a-veracidade-dos-e-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
