[rails 2] pluralizzazione

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:inrequire’
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:inrequire’
from script/generate:3

Qualche idea? :frowning:

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.

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.

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.

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

Grazie mille ad entrambi! :slight_smile:

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!

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

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!