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? :(
on 25.03.2008 15:48
on 25.03.2008 15:55
On Mar 25, 2008, at 3:48 PM, Luca Reghellin 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 25.03.2008 16:28
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 Cobianchi wrote: > On Mar 25, 2008, at 3:48 PM, Luca Reghellin 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 25.03.2008 16:45
On Mar 25, 2008, at 4:28 PM, Luca Reghellin 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.
on 25.03.2008 16:51
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
on 25.03.2008 16:59
Grazie mille ad entrambi! :)
on 17.04.2008 15:52
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!
on 18.04.2008 10:27
hai commentato le regole di default? Marco Mastrodonato 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!
on 24.04.2008 10:46
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