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

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

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

4 ответа

Решение

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

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

Для рельсов 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
Другие вопросы по тегам