Почему модели называются «user.rb», а не «user_model.rb»? - PullRequest
3 голосов
/ 24 декабря 2011

Почему контроллеры называются «users_controller.rb», а модели - «user_model.rb»?

Почему существует файл "application_controller.rb", но внутри представлений папка "layout" не называется "application"?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

Код вытекает из лучших идей, когда именование поддерживает внутреннюю модель проблемы разработчиков. При создании приложения я не думаю о поиске пользовательской модели (UserModel.find), я думаю о поиске пользователя (User.find). С другой стороны, контроллеры представляют собой слой перевода между веб-интерфейсом и хранилищем данных (и бизнес-логикой), поэтому имеет смысл называть их чем-то другим.

Существует также проблема пространства имен; если и моя модель, и контроллер имеют имя пользователя, то на какого пользователя я ссылаюсь в данный момент? В этом случае либо вы называете все с их типом, что встречается с проблемой, которую я описал выше, либо один «выигрывает», и на него можно ссылаться «голым». Кажется, что наиболее разумно, что модель победит, чтобы обеспечить лучшее умственное отображение.

Внутри app/views/layout - application.html.erb, и вы можете иметь другие макеты, которые выбираются различными контроллерами.

В конце концов, однако, это был выбор, сделанный во время разработки Rails, и это полностью стилистический выбор, основанный на том, что разработчики считали наиболее разумным, поэтому на самом деле нет «правильного» ответа на ваш вопрос. , к несчастью. На самом деле, некоторые подобные решения были пересмотрены. (application_controller.rb раньше просто называли application.rb.)

2 голосов
/ 24 декабря 2011

Ruby on Rails следует принципу "Соглашение по конфигурации" . В частности, соглашения об именах широко используются Rails при отображении ваших маршрутов в контроллеры, автоматической загрузке и перезагрузке классов, поиске подходящего шаблона для действия и многих других функциях.

Этот принцип ведет к некоторым ограничениям, поскольку вы не можете легко нарушить некоторые соглашения, не попав в неприятности. Но, с другой стороны, это облегчает нашу жизнь, поскольку мы получаем меньший объем конфигурации и можем легко переходить от одного проекта Rails к другому, потому что все они имеют одинаковую структуру и следуют одинаковым соглашениям. Кроме того, я полагаю, что это делает разработку ядра Rails намного проще, так как основная команда имеет много информации о том, как проект, использующий Rails, будет структурирован, и им не нужно будет сильно беспокоиться об обобщении. Они просто предполагают, что вы играете по правилам и соблюдаете соглашения.

Хотя, я сомневаюсь, что многие из соглашений об именах имеют серьезные основания. Я думаю, что в какой-то момент кто-то просто решил, что Rails будет проще обрабатывать ваши контроллеры и отличать их от других классов, если у них всех есть суффикс Controller. И здесь у нас есть все наши контроллеры в каталоге app/controllers с этим суффиксом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...