No mundo Ruby On Rails ja é comum a utilização do ActiveRecord o que pode não ser tão comum é a utilização do framework AR fora de uma aplicação Rails.
Exemplo no sistema que estou trabalhando preciso fazer alguns testes, e portanto sempre preciso apagar o banco de dados e carrega-lo com dados novamente, não queria fazer isso com os sql inserts, é ae que entra o ActiveRecord.
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection({
:adapter => 'mysql', :database => 'database', :username => 'root', :password => '', :host => 'localhost'})
class Pessoa < ActiveRecord::Base
set_table_name "pessoa"
end
agora você já pode fazer algumas mágicas, exemplo :
irb -r ActiveRecordTest.rb p = Pessoa.new p.save
o que acontece é que você já é capaz de salvar dados no seu banco de dados, sem utilizar SQL.
Definitivamente ActiveRecord é muito prático!
Uma feature muito interessante no Ruby On Rails é a “counter_cache” , mais o que seria counter cache ? vou explicar através de um exemplo , supomos que você esteja desenvolvendo um site de contatos, suponhamos que você queira mostrar a quantidade de contatos por tipos algo no estilo da listagem abaixo:
| Categoria | Quantidade |
|---|---|
| Familia | 10 |
| Profissional | 15 |
na maneira “tradicional” , essa listagem sempre acarretaria em varios “selects”, ou seja, um select seleciona todos os tipos de contatos e um select para totalizar cada tipo, imagine, seu sistema tem 1.000,000 tipos de contato você teria 1.000,000 selects + 1.
O ruby counter cache minimiza este problema, pois ele cria uma nova coluna na tabela categoria com a quantidade correta de contatos.
Então vamos ao código.
Criar o projeto rails
rails contato --database=mysql
Configuração
edite seu config/database.yml e altere os dados do seu banco de dados mysql
Criar a base de dados
rake db:create
Deixar o ruby criar algum código
ruby script/generate scaffold Categoria nome:string
ruby script/generate scafffold Contato nome:string email:string fone:string categoria_id:integer
Vamos criar as tabelas
rake db:migrate
class Categoria < ActiveRecord::Base has_many :contato end
edite o app/models/contato.rb qude deve ficar como:
class Contato < ActiveRecord::Base belongs_to :categoria end
agora você já pode iniciar o servidor ruby script/server e acessar http://localhost:3000/categorias.
vamos editar a view index da categoria e adicionar a quantidade de contatos:
...<table> <tr> <th>Nome</th> <th>Quantidade</th> </tr> <% for categoria in @categorias %> <tr> <td><%=h categoria.nome %></td> <td><%=h categoria.contato.length %></td>...
agora vamos fazer a magica acontecer, vamos primeiro adicionar a coluna magica no seu modelo categoria
ruby script/server migration add_categoria_count_cache
edite esse novo arquivo:
class AddCategoriaCountCache < ActiveRecord::Migration def self.up add_column :categorias,:contatos_count,:integer,:default => 0 end def self.down end end
logo após isso rode rake novamente,da pasta raiz do seu projeto:
rake db:migrate
Agora vamos atualizar o Contato para sempre atualizar o count_cache, para isso basta editar o app/models/contato.rb
class Contato < ActiveRecord::Base belongs_to :categoria, :counter_cache => true end
Pronto se tudo correu bem é para o counter cache estar habilitado, para testar basta acessar ruby script/console cadastrar algumas categorias e popular alguns contatos para essas categorias e verificar o resultado no browser.
aqui um outro ótimo exemplo.
divirta-se!
No Mundo Ruby On Rails, existe uma ferramenta Chamada Scaffold que tem como objetivo basicamente geração de um esqueleto para a nossa aplicação. Com esta ferramenta podemos começar o nosso projeto com bastante código gerado automaticamente.vamos a um passo-a-passo.
1. Baixe e instale o Ruby
2. Instale o MySQL acessando o link
3. Instalar o framework rails
gem install rails –include-dependencies
4. Crie uma nova aplicação rails blog -d mysql
5. Configure usuario e senha de acesso ao banco de dados para isso edite o arquivo config/database.yml e atualize o username e password
6. Cria o database
rake db:create
7. Gerar um scaffold
ruby script/generate scaffold blog titulo:string autor:string conteudo:text
8. Gera as tabelas rake db:migrate
9. Inicie o Servidor ruby script/server
acesse http://localhost:3000/blogs
Se tudo ocorreu bem é para ver um site com um cadastro totalmente funcional rodando.
Viva ao Ruby.