Как переопределить соглашения об именовании rails?


У меня есть модель под названием "одежда", которую я хочу сделать синглулярной (one piece of clothing). По умолчанию rails говорит, что множественное число-это одежда. Правильно или нет, я думаю, что будет более читабельно, если множественное число будет "одежда".

Как переопределить соглашение о множественном числе имен? Могу ли я сделать это правильно в модели, чтобы мне не приходилось делать это снова и снова? Как это изменит способ обработки маршрутов (я использую restful architecture)?

4 69

4 ответа:

Я не эксперт RoR, но нашел возможный подход. С указанного сайта вы можете добавить правило перегиба внутри файла config/initializers/inflections.rb:

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

Для rails 2.3.2 и, возможно, 2+, вам нужно сделать это немного иначе:

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

Добавьте это в свой файл environment.rb, Если вы пытаетесь остановить плюрализацию базы данных

ActiveRecord::Base.pluralize_table_names = false

С Ruby 2.2.2 windows или linux для меня лучшим решением было:

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