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

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

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

Ответ 1

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

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

Ответ 2

Для рельсов 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

Ответ 3

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

ActiveRecord::Base.pluralize_table_names = false

Ответ 4

С 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