Как переопределить соглашения о присвоении имен рельсам?
У меня есть модель под названием "одежда", которой я хочу быть в единственном числе (один предмет одежды). По умолчанию рельсы говорят, что множественное число является одеждой. Правильно или неправильно, я думаю, что это будет более читабельным, если множественное число является "одежда".
Как переопределить соглашение о присвоении имен во множественном числе? Могу ли я сделать это прямо в модели, чтобы мне не приходилось делать это снова и снова? Как это изменит способ обработки маршрутов (я использую архитектуру 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