Как переопределить соглашения об именах 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