dica simples de ActiveRecord

Posted on July 21, 2009

0


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.

Posted in: rails