Це умова 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