Convenções de Rails para nomes de objetos de banco de dados

12 respostas
T

Boa tarde a todos. Tenho algumas dúvidas de iniciante que talvez já tenham sido resolvidas por vocês.

Estou iniciando um projeto em Rails em um local onde o pessoal que administra o banco de dados possui um padrão de nomenclatura para nomes de tabelas, colunas, etc. que difere daquele consagrado pelo framework.

Sendo assim, pergunto: existe alguma forma de usar outra convenção de nomes de objetos de banco de dados no Rails sem deixar de usar seus recursos? Por exemplo, gostaria de continuar aproveitando o poder das migrações porém seguindo outro padrão de nomes.

Outra coisa: se eu tiver um modelo com nome composto, como fazer o Rails tratar seu plural adequadamente? Como exemplo, supondo que eu tenha um modelo chamado TipoProduto, quero que seu plural seja TiposProduto e não TipoProdutos, como faz a pluralização do Rails.

Desde já grato pela atenção.

12 Respostas

F

Sobre o uso de plural de uma olhada nesse link
http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html
e

talvez isso ajude, acredito que isso ajude também na sua nomemclatura.

é trabalhoso usar Rails fora do padrão dele.

T

Beleza, o uso da classe Inflector resolve tranquilo o problema do plural de nomes compostos. Mas não enxergo como ele resolve o problema da nomenclatura.

O padrão que a equipe de banco de dados usa é o seguinte:
- os nomes dos objetos (tabelas, colunas) devem estar em maiúsculas;
- concatena-se ao nome da coluna um mnemônico representando o tipo de dados da coluna.

Como exemplo, tomemos a tabela abaixo:
USUARIO
- ID_USUARIO
- STR_NOME_USUARIO

Como mapear isso no model do Rails? Tentei usar os métodos set_table_name, set_primary_key... Mas quando rodo a migration, ele ainda cria os objetos seguindo o padrão do Rails.

D

Vê se é isso que vc precisa: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001804

T

Olá dlt, obrigado pela ajuda mas como falei no post anterior, tentei usar esse método sem sucesso.

D

Oi, tnaires. Não tinha visto que vc já tinha tentado o set_table_name.

Acho que não entendi direito o seu problema. Pelo o que eu entendi, você precsa alterar o nome da tabela a ser criada na migration, usar um set_table_name no modelo criado e depois resolver os problemas de pluralizacão com inflectors.

Poderia descrever os passos que segue e os resultados que espera quando roda as migrations?

T
dlt:
Pelo o que eu entendi, você precsa alterar o nome da tabela a ser criada na migration, usar um set_table_name no modelo criado e depois resolver os problemas de pluralizacão com inflectors.
Nossa, realmente isso eu não tinha feito... Tomemos como exemplo a tabela de usuários cuja estrutura mostrei num post anterior. Então preciso alterar o código da migration abaixo:
create_table :usuarios do |t|
  t.string nome

  t.timestamps
end
Para isso?
create_table :USUARIOS do |t|
  t.string :STR_NOME_USUARIO

  t.timestamps
end
Desculpe a ignorância :oops:, achei que se eu configurasse tudo no model o Rails também "traduzisse" a migration.
D

O arquivo da migration já tinha sido gerado quando vc usou o script/generate model e não é editado só porque vc chamou um método no modelo. :smiley:

F
tnaires:
dlt:
Pelo o que eu entendi, você precsa alterar o nome da tabela a ser criada na migration, usar um set_table_name no modelo criado e depois resolver os problemas de pluralizacão com inflectors.
Nossa, realmente isso eu não tinha feito... Tomemos como exemplo a tabela de usuários cuja estrutura mostrei num post anterior. Então preciso alterar o código da migration abaixo:
create_table :usuarios do |t|
  t.string nome

  t.timestamps
end
Para isso?
create_table :USUARIOS do |t|
  t.string :STR_NOME_USUARIO

  t.timestamps
end
Desculpe a ignorância :oops:, achei que se eu configurasse tudo no model o Rails também "traduzisse" a migration.

Na verdade não, o capslock não sever com SYMBOLS, vc tem que usar string mesmo aqlgo no estilo

create_table "USUARIOS" do |t|
  t.string "STR_NOME_USUARIO"

  t.timestamps
end

vale ressaltar que você tera que criar a coluna ID_USUARIO manualmente também, por que o rails vai criar o campo somente id.

D

Funciona, sim.

Isso. E ainda tem que usar o set_primary_key no modelo.

T

Shame on me :oops:

Na verdade, não esperava que o Rails reescrevesse o código, e sim, associasse o símbolo :nome ao campo “STR_NOME_USUARIO”.

T

OK pessoal, obrigado. Farei alguns testes e depois postarei aqui o resultado.

R

Não da pra alterar a convençãode nomes de objetos do banco de dados, você vai ter que configurar o nome de cada coluna e cada tabela para cada entidade/model :frowning:

Criado 14 de junho de 2010
Ultima resposta 17 de jun. de 2010
Respostas 12
Participantes 4