Convenções de Rails para nomes de objetos de banco de dados  XML
Índice dos Fóruns » Ruby & Ruby on Rails
Autor Mensagem
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

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.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

Sobre o uso de plural de uma olhada nesse link
http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html
e
http://softwareas.com/bitten-by-rails-pluralizationinflection

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

é trabalhoso usar Rails fora do padrão dele.

att
Rafael Felix

Rolling With Code
Twitter
[WWW]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

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:


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.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

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


"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

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

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

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?

"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

dlt wrote: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:

Para isso?

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

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

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.

"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

tnaires wrote:
dlt wrote: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:

Para isso?

Desculpe a ignorância , 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



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


att
Rafael Felix

Rolling With Code
Twitter
[WWW]
dlt
JavaEvangelist
[Avatar]

Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline

Na verdade não, o capslock não sever com SYMBOLS


Funciona, sim.

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


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

This message was edited 1 time. Last update was at 16/06/2010 14:56:15


"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

dlt wrote: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.

Shame on me

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

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

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

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

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



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
 
Índice dos Fóruns » Ruby & Ruby on Rails
Ir para:   
Powered by JForum 2.1.8 © JForum Team