# \[rails 2\] pluralizzazione

**URL:** <https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885>\
**Category:** IT\
**Created:** [March 25, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885 "2008-03-25T15:48:34Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/1 "2008-03-25T15:48:34Z")

</div>

Ciao! Ho un problema di pluralizzazione. Vorrei creare una tabella  
‘concerti’, solo che creando il modello ‘Concerto’, rails mi fa una  
tabella ‘concertos’.  
Tra l’altro poi ho bisogno che la cosa venga rispettata anche nelle  
routes (REST).

Ho provato a scrivere cosÃ¬ in config/environment.rb:

Inflector.inflections do |inflect|  
inflect.irregular ‘concerto’,‘concerti’  
end

ActionController::Routing::Routes.reload!

subito prima di:

Rails::Initializer.run do |config|

# Settings in config/environments/\* take precedence over those

specified here.

# Application configuration should go into files in

config/initializers

Ecc…

Ma quando cerco di creare un modello, il terminale dice questo:

/config/environment.rb:13: uninitialized constant Inflector (NameError)  
from  
/opt/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
from  
/opt/local/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/generate.rb:1  
from  
/opt/local/lib/ruby/site\_ruby/1.8/rubygems/custom\_require.rb:27:in  
`gem_original_require' from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in`require’  
from script/generate:3

Qualche idea? ☹

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 3:55pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/2 "2008-03-25T15:55:33Z")

</div>

On Mar 25, 2008, at 3:48 PM, Luca R. wrote:

> Ciao! Ho un problema di pluralizzazione. Vorrei creare una tabella  
> ‘concerti’, solo che creando il modello ‘Concerto’, rails mi fa una  
> tabella ‘concertos’.  
> Tra l’altro poi ho bisogno che la cosa venga rispettata anche nelle  
> routes (REST).

Domanda forse stupida: perche’ vuoi per forza usare una parola italiana?

S.

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 4:28pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/3 "2008-03-25T16:28:33Z")

</div>

No Stefano, la tua Ã¨ una domanda plausibile. In effetti non ho al  
momento reali obblighi in merito. Suppongo che se volessi che il  
navigatore potesse vedere es. la lista concerti digitando /concerti  
anzichÃ© /shows, pur mantenendo Show come nome del modello, basterebbe  
sistemare opportunamente le routes, dunque puoi considerarlo un  
‘capriccio’.

CiÃ² nonostante, essendo che sto imparando, voglio capire come si puÃ²  
risolvere un problema del genere, che potenzialmente potrebbe saltar  
fuori in futuro con altri progetti.  
Se una cosa cosÃ¬ non si puÃ² sistemare in velocitÃ , obiettivamente Ã¨ un  
grosso limite di Rails.

Stefano C. wrote:

> On Mar 25, 2008, at 3:48 PM, Luca R. wrote:
> 
> > Ciao! Ho un problema di pluralizzazione. Vorrei creare una tabella  
> > ‘concerti’, solo che creando il modello ‘Concerto’, rails mi fa una  
> > tabella ‘concertos’.  
> > Tra l’altro poi ho bisogno che la cosa venga rispettata anche nelle  
> > routes (REST).
> 
> Domanda forse stupida: perche’ vuoi per forza usare una parola italiana?
> 
> S.

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 4:45pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/4 "2008-03-25T16:45:07Z")

</div>

On Mar 25, 2008, at 4:28 PM, Luca R. wrote:

> No Stefano, la tua è una domanda plausibile. In effetti non ho al  
> momento reali obblighi in merito. Suppongo che se volessi che il  
> navigatore potesse vedere es. la lista concerti digitando /concerti  
> anziché /shows, pur mantenendo Show come nome del modello, basterebbe  
> sistemare opportunamente le routes, dunque puoi considerarlo un  
> ‘capriccio’.

Capisco.  
Comunque la soluzione e’ di mettere le regole custom di  
pluralizzazione DOPO  
il blocco di inizializzazione, oppure fare come consiglia il commento:  
“Application configuration should go into files in config/initializers”

Infatti se guardi in quella directory troverai un file  
“inflections.rb” con un esempio  
commentato.

S.

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 4:51pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/5 "2008-03-25T16:51:50Z")

</div>

nella struttura (directories) del progetto rails, vai su  
config/initializers e apri il file inflections.rb (su rails 2, se su 1.x  
apri il file environment.rb sotto \config).  
Trovi le regole di “pluralizzazione”, queste sono quelle di default.

# Inflector.inflections do |inflect|

# inflect.plural /^(ox)$/i, ‘\1en’

# inflect.singular /^(ox)en/i, ‘\1’

# inflect.irregular ‘person’, ‘people’

# inflect.uncountable %w( fish sheep )

# end

e puoi crearne di nuove, tramite regex. Questa Ã¨ la lista delle mie  
regole (adatte alla lingua italiana), sufficienti per i casi piÃ¹ comuni

Inflector.inflections do |inflect|  
inflect.plural /(._)a$/i, ‘\1e’  
inflect.plural /(._)e$/i, ‘\1i’  
inflect.plural /(._)o$/i, ‘\1i’  
inflect.plural /(._)io$/i, ‘\1i’  
end

Ne approfitto per chiedere all’intera comunitÃ italiana di contribuire  
alla creazione di un file di regole di pluralizzazione migliore  
possibile (proposta per il wiki)

Raffaele Tesi

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [March 25, 2008, 4:59pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/6 "2008-03-25T16:59:36Z")

</div>

Grazie mille ad entrambi! 🙂

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [April 17, 2008, 3:52pm UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/7 "2008-04-17T15:52:49Z")

</div>

Raffaele Tesi wrote:

> e puoi crearne di nuove, tramite regex. Questa Ã¨ la lista delle mie  
> regole (adatte alla lingua italiana), sufficienti per i casi piÃ¹ comuni
> 
> Inflector.inflections do |inflect|  
> inflect.plural /(._)a$/i, ‘\1e’  
> inflect.plural /(._)e$/i, ‘\1i’  
> inflect.plural /(._)o$/i, ‘\1i’  
> inflect.plural /(._)io$/i, ‘\1i’  
> end

A me queste non funzionano, se uso .irregular invece si, come mai? (Uso  
rails 2) Forse non Ã¨ corretta la punteggiatura?

Altra domanda: serve fare la reload o serviva solo per rails 1?  
ActionController::Routing::Routes.reload!

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [April 24, 2008, 10:46am UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/8 "2008-04-24T10:46:23Z")

</div>

Raffaele Tesi wrote:

> hai commentato le regole di default?

Se intendi quelle del file inflections.rb non le ho commentate, lo erano  
giÃ di default

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [April 18, 2008, 10:27am UTC](https://www.ruby-forum.com/t/rails-2-pluralizzazione/132885/9 "2008-04-18T10:27:10Z")

</div>

hai commentato le regole di default?

Marco M. wrote:

> Raffaele Tesi wrote:
> 
> > e puoi crearne di nuove, tramite regex. Questa Ã¨ la lista delle mie  
> > regole (adatte alla lingua italiana), sufficienti per i casi piÃ¹ comuni
> > 
> > Inflector.inflections do |inflect|  
> > inflect.plural /(._)a$/i, ‘\1e’  
> > inflect.plural /(._)e$/i, ‘\1i’  
> > inflect.plural /(._)o$/i, ‘\1i’  
> > inflect.plural /(._)io$/i, ‘\1i’  
> > end
> 
> A me queste non funzionano, se uso .irregular invece si, come mai? (Uso  
> rails 2) Forse non Ã¨ corretta la punteggiatura?
> 
> Altra domanda: serve fare la reload o serviva solo per rails 1?  
> ActionController::Routing::Routes.reload!
