Em um outro post eu comentei sobre como conhecer bem as convenções do Rails. Bem, este post irá aprofundar um pouco mais no assunto ao abordar as pluralizações.
Pluralização é uma das convenções do Rails para quando você cria por exemplo, um modelo. Por “padrão”, o Rails se encarregará de criar toda a estrutura necessária ao modelo, então o modelo deve ser um nome no singular, a tabela criada estará no plural, o modelo estará no singular, mas com a primeira letra capitalizada (maiúscula), etc.
Esta convenção é de fato uma mão na roda, porém ela só é efetiva quando desenvolvemos usando o inglês. Quando aplicado a gramática portuguesa, ela se torna um problema já que Rails não tem suporte a outras línguas.
A tabela abaixo demonstra a pluralização do modelo carro para todos os métodos gerados pelo Rails:
Método Resultado
camelize Carro
classify Carro
demodulize carro
foreign_key carro_id
humanize Carro
pluralize carros
singularize carro
tableize carros
titleize Carro
underscore carro
Tudo lindo correto? Errado. Vamos pluralizar agora o modelo injeção:
A primeira coisa é eliminar o cedilha e acentuações o que resulta em injecao:
Método Resultado camelize Injecao classify Injecao demodulize injecao foreign_key injecao_id humanize Injecao pluralize injecaos singularize injecao tableize injecaos titleize Injecao underscore injecao
Em vermelho o problema, Rails não reconhece a gramática portuguesa, logo a pluralização não resulta na forma correta injecoes (injeções).
Para verificar como o Rails trabalha com a pluralização visite o: nubyonrails.
Existem maneiras de desativar a pluralização e fazer a programação “na marra”, mas isso gera um custo adicional desnecessário ao desenvolvedor além de quebrar o conceito do framework que é o de focar o desenvolvimento apenas naquilo que é fundamental.
E, traduzindo o modelo, não irá garantir que os campos que são controlados pelo Rails como “id”, “created_at”, “updated_at” entre outros, também serão traduzidos, ou seja, você terá que mantê-los ou novamente, dedicar tempo a esta tarefa.
Por fim, qual dos códigos abaixo é o de mais fácil compreensão?
1: @liner = Liner.find_by_code "001" 2: @liner = Liner.find_by_codigo "001" 3: @armador = Armador.find_by_code "001" 4: @armador = Armador.find_by_codigo "001"
Se você domina o inglês, obviamente irá optar pela primeira opção. Se você é adepto do português irá escolher a opção 4 (depois de desabilitar a pluralização), só que isso implica em ter o seu código funções pseudo-traduzidas pois o “find_by” não é traduzido. Ah! Mas então, para evitar isso, você pode partir para a solução 3, ter todos os campos escritos em inglês, o que não parece lógico já que não existe nenhum grande esforço adicional em também ter o modelo traduzido.
Portanto, a melhor solução é continuar usando a pluralização e traduzir seus campos para o inglês. Quem sabe, com o tempo que você vai ganhar no desenvolvimento, você consegue finalmente se inscrever naquele curso de inglês? 🙂
[…] — Tags: convenções, plugin, pluralização, Rails — hollanderramos @ 12:06 Neste post eu comentei que era mais fácil trabalhar com Rails utilizando a convenção em inglês. Nas […]
Pingback por Plugin Brazilian Rails « Blog do Hollander :: RoR de leigo para leigos — 4 maio, 2008 @ 12:06
[…] a convenção de pluralização dos métodos. Para saber como a pluralização trabalha veja o post sobre este assunto. Clique no botão next para completar a criação do […]
Pingback por Dicas rápidas de RADRails I - Novo Projeto « Blog do Hollander :: RoR de leigo para leigos — 16 maio, 2008 @ 21:10