По соглашению Rails один контроллер обрабатывает одну модель, независимо от того, могут ли один или несколько экземпляров этой модели существовать во время выполнения. Однако у вас может быть приложение Rails, в котором (некоторые) контроллеры (и связанные представления) не связаны с какой-либо конкретной моделью, а, скорее, обрабатывают более сложный набор функций. В этом случае автоматическое множественное число не имеет смысла.
Приложение Rails, над которым я сейчас работаю, попадает в эту категорию, и меня просто раздражает то, что Rails ожидает, что идентификаторы, которые я определяю как единственное число в одном месте, затем будут использоваться во множественном числе в других местах. Например, я мог бы захотеть определить что-то вроде этого в config/routes.rb
:
resource :dashboard, :only => [:show]
а затем я хочу, чтобы контроллер DashboardController
отображал сводную информацию об определенных аспектах приложения, собирая информацию из более чем одной таблицы базы данных. Итак, здесь Dashboard
нет ссылки на какую-либо модель приложения, и было бы странно иметь имя контроллера DashboardsController
.
В этом ответе я нашел хорошее решение, которое раздражает автоматическое множественное число . Короче говоря, отредактируйте файл config/initializers/inflections.rb
и добавьте к этому определению слова, которые вы не хотите автоматически использовать во множественном числе:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end