Ruby ob Rails имеет специальный класс Inflector, который предназначен для автоматического изменения правописания слов в контексте их применения. Речь идет, к примеру, об изменении названия класса, скажем City, для именования таблицы в базе во множественном числе – cities. В большинстве случаев этот класс работает потрясающе грамотно, зная много правильных вариантов приведения, как то person => people, но в некоторых ситуациях может давать сбой, в частности при использовании в названиях неанглийских слов (латинских, немецких, русские названия, написанные транслитом). В любом случае, если есть подозрение на то, что выбранное вами для модели название может быть неправильно переведено рельсами во множественное число – всегда можно сначала проверить работу класса Inflector при помощи консоли:
ActiveSupport::Inflector.pluralize "virus"
или еще проще (так как Inflector можно использовать сразу же с любыми строками):
"virus".pluralize
Кстати, результатом предыдущих операций будет множественное число от virus, а это – слово viri. Что есть грамматически правильный перевод, но все же более распространенный в быту вариант есть viruses.
Так вот – если класс Inflection работает по любой причине не так, как вы хотите – откройте файл config/initializers/inflections.rb, раскомментируте шаблон, который вы там увидите, и внесите свои правки:
ActiveSupport::Inflector.inflections do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %25w( fish sheep )
inflect.irregular 'virus', 'viruses'
end
И главное – обязательно нужно будет перезапустить сервер или консоль после внесения изменений в данный файл!