dica simples de ActiveRecord

21 July 2009

O ActiveRecord do Rails é bem famoso por buscar as colunas do banco de dados e adicionar os campos dinâmicamente nas classes, fazendo com que uma classe aparentemente sem atributos ou propriedades realize todas as operações de crud, por exemplo: class Car < ActiveRecord::Base end Para o model acima, o rails espera basicamente o seguinte: arquivo = car.rb class = Car tabela = cars lembrando que a pluralização funciona para os nomes em ingles. No caso de classes ou tabelas em português as configurações pode ser feitas no arquivo config/initializers/inflections.rb. Mas o que muita gente tem dúvidas é no caso da utilização de um banco onde as tabelas já existem e possuem nomes diferentes dos esperados pelo rails, como uma tabela TB_CARS_01. Existe um método no ActiveRecord::Base para isso chamado set_table_name: class Car < ActiveRecord::Base set_table_name "TB_CARS_01" end Agora o rails buscará na tabela "TB_CARS_01" ao invés da default "cars". Existe o caso onde o banco é novo, e a empresa precisa seguir algum padrão como o usado acima para os nomes das tabelas. Para criar a tabela com o nome "TB_CARS_001" a partir da migration é simples, basta passar o nome do parâmetro para o create_table: class CreateCars < ActiveRecord::Migration def self.up create_table :TB_CARS_01 do |t| #... t.timestamps end end def self.down drop_table :TB_CARS_01 end end Essas alterações não são encorajadas pelo rails, porém algumas equipes precisam delas. Pra finalizar, existe um conjunto de gems para facilitar questões brasileiras no rails, como a própria pluralização, chamado Brazilian Rails.
comments powered by Disqus