GEtna – Ep. 3: Mapeando Tabelas do Banco de Dados
7 agosto, 2008
Arquivado em Artigos
Tags: ActiveRecord, Banco de Dados, Getna, Monografia, Rails, Ruby
Primeiro passo de nosso gerador Rails era buscar todas as tabelas do banco de dados e criar a estrutura inicial… outro problema após algumas horas vendo documentação… bingo! nada XD, Pedindo ajuda para nossa comunidade de sábios desenvolvedores do rails-br, obtive varias sugestões como: De Buscar Pelo Model de Abraão Coelho, Cássio Marques, infelizmente não serviu, pois ainda não tenho model algum, necessito cria-los. teve uma otima ideia, já que até agora eu defini que o banco seria MySQL poderia fazer um simples:
mysql> show tables; <= mostra as tabelas;
mysql> describe suatabela; <= exibe sua tabela com as descrições do campo.
OK, Mas queria algo mais pratico, tinha certeza que o ActiveRecord poderia fazer isso, e não ia desistir de encontrar.
Estava tentando algo bem bobo como:
ActiveRecord::Base.column_names
Me deparei com o seguinte erro:
NoMethodError: undefined method `abstract_class?’ for Object:Class
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1915:in `class_of_active_record_descendant’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1277:in `base_class’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1012:in `reset_table_name’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1008:in `table_name’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1145:in `columns’
from /var/lib/gems/1.8/gems/activerecord-2.1.0/lib/active_record/
base.rb:1158:in `column_names’
from (irb):16
Ricardo S Yasuda e Davis Zanetti Me abriram os olhos quanto ao metodo que só funciona em uma instancia do ActiveRecord e não em uma Classe Abstrata, isso foi muito importante para a minha conclusão.
Deu uma dica boa sobre Adapters mas isso ainda não era claro pra mim, mas foi muito importante isso ai.
Juan Maiz então me endicou uma saída, utilizar o Sequel Uma solução perfeita para meus problemas, mas fiquei um pouco desanimado pensando que o ActiveRecord… o Poderoso ActiveRecord não tinha tal funcionalidade… e tambem que meu simples generator tenha que usar alguma dependência tão primitivamente para realizar uma pequena tarefa. Bom não desisti e fui feliz em minha busca e insistência.
@con = ActiveRecord::Base.connection
@table_names = @con.execute(‘show tables’)
Está ai, nossas tabelas 🙂 legal né, saí juntando as dicas do pessoal todo e bingo, saiu alguma coisa, bom com isso já posso começar…, mas como sou meio curioso e me animei com esse negocio e não custava nada dar uma adentrada a mais… olha o que descobri…
@con = ActiveRecord::Base.connection
@table_names = @con.tables
😀 Que legal, não era que o ActiveRecord Tinha mesmo o bendito Método… só um pouco de pesquisa e fica simples.
Agradeço a toda a Comunidade.
Abraços
que bacana, fui até citado hahaha
boa sorte aí com o projeto, desde já aviso que vai ser muito útil!
aew @Abraão
claro, você ajudou nisso ai.
Obrigado.
vou fazer o melhor que posso.
abraços!
Muito legal max, quando estiver pronto não deixe de avisar! Realmente muito estranho alguém não ter feito antes! Faz rápido antes que alguém leve o crédito!
Olá Amanda
^^ Obrigado pela força
to trabalhando muito em cima disso, espero que ninguém o faça antes de mim se não vou perder muito coisa, alem de tempo.
pode ficar tranquila, vou avisar com certeza!
Agora que eu entendi mais ou menos o que você quer fazer… 😛 Dá uma sacada neste link:
http://tas.milk-it.net/carlos/rails-databrowser-lancado/
http://tas.milk-it.net/carlos/rails-databrowser-no-rubyforge/
hum…
Legal.
Obrigado pelos Links João Paulo.
🙂