2009-07-26 19 views
66

Mam model o nazwie "odzież", który chcę być singlularny (jeden element odzieży). Domyślnie szyny mówią, że liczba mnoga to ubranie. Dobrze czy źle, myślę, że będzie bardziej czytelny, jeśli liczba mnoga to "ubrania".Jak zastąpić konwencje nazewnictwa szyn?

Jak zastąpić konwencję nazewnictwa w liczbie mnogiej? Czy mogę to zrobić w modelu, więc nie muszę tego robić w kółko? W jaki sposób zmieni to sposób obsługiwania tras (korzystam z restrykcyjnej architektury)?

+10

Co powiesz na zmianę swojego modelu na odzież i odzież? –

+0

Powiązane: http://stackoverflow.com/q/6178900/1505348 – Lucio

Odpowiedz

115

Nie jestem ekspertem od RoR, ale znalazłem numer possible approach. Od wskazanej strony można dodać regułę przegięcia wewnątrz pliku config/initializers/inflections.rb:

# Add new inflection rules using the following format 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'clothing', 'clothes' 
end 
+45

W rzeczywistości twoje niestandardowe odmiany powinny znajdować się w config/initializers/inflections.rb –

+3

Dla tych, którzy są leniwi jak ja: 'ActiveSupport :: Inflector.inflections do | inflect | 'jeśli nie znajdzie Inflectora na swoim własnym –

+0

Podoba mi się twoje podejście. Gdybym miał wiele "niestandardowych" odmian, zapisałbym je w yaml i załadowałem plik w tym samym archiwum. – Aldana

27

Dla szyn 2.3.2 i może 2+, co musisz zrobić, to trochę inaczej:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural /^(ox)$/i, '\1\2en' 
    inflect.singular /^(ox)en/i, '\1' 

    inflect.irregular 'octopus', 'octopi' 

    inflect.uncountable "equipment" 
end 
5

Dodaj ten w plik environment.rb jeśli starają się zatrzymać liczby mnogiej w bazie

ActiveRecord::Base.pluralize_table_names = false 
-1

z Ruby 2.2.2 Windows lub Linux dla mnie najlepsze rozwiązanie było:

ActiveRecord::Base.pluralize_table_names = false 

class Persona < ActiveRecord::Base 
end 


personas = Persona.all 
personas.each do | personita | 
    print "#{personita.idpersona} #{personita.nombre}\n" 
end 

p Persona.count