Conheço um plugin chamado Simple Captcha, eu acho ele muito bom e satifaz todas as minhas necessidades.
Vou explicar como instalar e usar:
Instalação ImageMagick e RMagick::
Como o captcha trabalha com geração dinâmica de imagens e necessário instalar essas libs:
1 2 3 | sudo apt-get install imagemagick sudo apt-get install libmagick9-dev sudo gem install rmagick |
Instalação do plugin Simple Captcha:
No diretório do projeto digite o seguinte:
1 | ruby script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha |
Configuração da aplicação:
No diretório do projeto digite:
1 | rake simple_captcha:setup |
O comando acima irá criar um arquivo de migração para armazenar os captchas gerados no banco de dados, também irá criar um partial para exibir o captcha na view.
Agora faça o migrate:
1 | rake db:migrate |
É necessário adicionar uma rota no arquivo config/routes.rb, essa rota será responsável por gerar as imagens:
1 | map.simple_captcha '/simple_captcha/:action', :controller => 'simple_captcha' |
Adicione a seguinte linha no arquivo app/controllers/application.rb:
1 2 3 | ApplicationController < ActionController::Base include SimpleCaptcha::ControllerHelpers end |
Como usar:
No seu formulário na view adicione o seguinte:
1 | <%= show_simple_captcha( : object=> "user" ) %> |
Onde : object => “user” é o nome do seu model.
Obs.: Eu deixei separado o dois pontos, : object => “user” porque o wordpress troca por desenhos smiley, na hora de codificar deixa tudo junto.
No model adicione a seguinte linha:
1 2 3 | class User < ActiveRecord::Base apply_simple_captcha end |
Agora no controller ao invés de usar:
1 | @user.save |
Use:
1 | @user.save_with_captcha |
O método @user.save funciona corretamente, mas não leva em consideração o novo campo captcha, por isso é necessário usar o método @user.save_with_captcha.
Outras opções de uso e configuração, para ver outras alternativas eu sugiro que leia: http://expressica.com/simple_captcha/.
Se você gostou desse texto e acha que ajudou você, me recomende:
.
