Rails: ActiveRecord::Validations para validar o formato e a veracidade dos e-mail 1

Postado por Herminio em agosto 20, 2009

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 < ActiveRecord::Base
    validates_format_of :email,
                        :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end

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 format, por exemplo:

#
# email invalido pois não tem nenhum servidor de email que responda por gmail.com em vez de gmail.com
#
alguma_coisa@gmaio.com

Por isso iremos utilizar o plugin Email-Veracity. E vamos melhorar a nossa validação, basta ir na pagina do Email-Veracity e fazer o download do plugin para a pasta vendor/plugins/ no seu projeto.

require 'email_veracity'

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

    def is_a_valid_email?
        address = EmailVeracity::Address.new("#{self.email}")
        address.valid?
    end
end

Bem, agora podemos verificar se é um email 100% validado, onde fazemos um require no modulo de email_veracity e incluimos um if no validates_format_of que faz uma chamada ao método is_a_valid_email? se esse método retorna true faz a validação se retorna false não valida, podemos notar que o método implicitamente da um return em address.valid? bem é isso espero que tenham gostado.

Rails para upload de arquivos e imagens usando o plugin paperclip 2

Postado por Herminio em março 24, 2009

Bem, irei mostrar como fazer upload de arquivos utilizando o paperclip e poderemos notar como é super simples de utilizar. Se o arquivo for imagem iremos precisar do imagemagick instalado na maquina onde irá ficar sua aplicação, pois o plugin utiliza o imagemagick para mexer com imagens.

Para o download do paperclip existe duas maneiras. Uma é baixando pelo próprio rails e a outra é indo no site e fazendo o download e descompactando na sua aplicação.

O paperclip por sua vez requerer algumas colunas no modelo para que seja necessário o seu funcionamento. E quais são elas?

Pois bem, digamos que na sua aplicação exista o modelo user, onde cada user contem uma imagem que é o seu avatar.  Podemos fazer o seguinte:

Agora iremos trabalhar o paperclip a nível de model. Vamos colocar toda a nossa regra de negocio e veremos como o sistema deverá tratar o upload de arquivos.

Bem não iremos fazer nenhuma modificação nos controllers. Então vamos partir para as views e finalizar o nosso tutorial.

Primeiramente vamos criar um partial, onde essa view será comum tanto para as telas de new.html.erb como edit.html.erb. Em sua aplicação vá até SUA_APLICAÇÂO/app/view/users/ e crie um arquivo chamado _user.html.erb e veja como será o código desse arquivo.

Agora, que temos o partial _user.html.erb precisamos adaptar as telas de edit.html.erb e new.html.erb então vamos seguir o seguinte código:

E nas views index.html.erb e show.html.erb iremos fazer a chamada da imagem.

Finalmente terminamos o nosso objetivo de fazer com que a nossa aplicação faça upload de arquivos. E caso você queira saber mais sobre o paperclip basta acessar a sua Documentação/RDoc ou entrar na lista de discussão do paperclip. É isso pessoal espero que tenham gostado.

Utilizando o Rails 2.2 para enviar email via gmail por smtp/imap 4

Postado por Herminio em fevereiro 27, 2009

Bem, irei mostrar como o Rails utilizará um servidor de email via smtp / imap para mandar emails. Onde teremos o uso do gmail, mas poderá ser qualquer provedor.

1. Primeiramente ter o rails instalado e funcionando.
2. Depois iremos instalar um plugin para agilizar o nosso trabalho, o plugin se chama action_mailer_optional_tls.

Como instalar o plugin? Existem duas maneiras.

A primeira maneira é instalar usando os scripts do próprio rails.

ou A segunda maneira é ir no site do plugin e clicar em download e descompactar na pasta:

Após ter instalado o plugin, basta abrir o arquivo e incluir as seguintes linhas, em:

depois disto vamos criar um mailer:

Após executar o comando acima, basta abrir este arquivo e incluir essas informações, para a funcionalidade de confirmar via email que a conta do usuário foi criada.

Esse será o template utilizado que será enviado no corpo da mensagem, e estamos utilizando texto, já pensando nas pessoas que só recebem emails do tipo texto.

E para finalizar vamos colocar a chamada na action create do controller de users para que seja enviado email assim que o usuário for criado e savo no banco de dados.

Vamos incluir no controller:

Bem, agora basta você implementar na sua aplicação e testar, para mais informações basta acessar o Rails Guides!