По соглашению 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