Каковы недостатки именования контроллеров в единственном числе в Rails?

Я знаю, что в Rails мы следуем соглашениям. И мы должны назвать контроллеры во множественном числе. Недавно я нанял фрилансера, который помог бы мне с одной частью моего приложения в Rails, так как я действительно новичок в этой среде и Ruby. У меня есть PortfolioController - это просто кажется правильным, потому что портфель - это контейнер для записей (кто говорит: "У меня есть портфели"?). Фрилансер сказал, что это неправильно, и у меня будут проблемы с нарушением конвенции и переименовал ее в PortfoliosController, Я несколько раз спрашивал, какие именно у меня будут проблемы, если я назову свой контроллер PortfolioController скорее, чем PortfoliosController и я не получил никакого объяснения, кроме "У вас будут проблемы".

Итак, кто-нибудь может сказать мне, что это за проблемы?

1 ответ

Решение

Что ж, самой простой причиной было бы то, что любой, кто работает над этим проектом, вероятно, будет ссылаться на него во множественном числе при работе над кодом, а затем должен понять: "О, они решили не следовать соглашению в этом одном контроллере" после неуказанного период времени "WTF?" в то время как они пытаются выяснить, что они делают неправильно. Также семантически ваш контроллер является контроллером ВСЕХ Портфолио в таблице Портфолио.

По кодам у вас будут проблемы с маршрутами. Вам придется составить кучу нестандартных маршрутов, потому что http://my_app/portfolios идет к index Действие контроллера по умолчанию. Затем вы показываете конкретное портфолио с http://my_app/portfolios/1 который покажет вам портфолио с id из 1, Так что будьте готовы создать и поддерживать множество пользовательских маршрутов в вашем config/routes.rb файл. Вы видите похожие проблемы с вещами, имена которых одинаковы, во множественном или единственном числе, например equipment где вы можете иметь один элемент оборудования или несколько единиц оборудования. Смотрите это: путь соединения рельсов и ошибка маршрутизации, когда имя единственного и множественного числа модели совпадают (например, оборудование, виды). Это не только делает ваши маршруты шаткими, но и вызывает конфликты такими методами, как portfolio_path или же portfolio_url,

Другие вопросы по тегам