Что такое "ресурс" в Rails?
Тупой вопрос, но у меня есть некоторое замешательство в том, что именно "ресурс" находится в Rails. Этот термин используется повсюду, но я получаю смешное чувство, что его можно использовать довольно свободно. Он упоминается в модели, контроллере и, буквально, в routes.rb
.
Это конкретный маршрут? Например, map.resources
отображает 7 ресурсов RESTful. Таким образом, примером одного ресурса может быть вызов, например, действия index
конкретного контроллера класса?!?
Является ли ссылка ссылкой на всю страницу/объект, который был получен? или, возможно, более узко, таблицу базы данных? или строка, которая была удалена?
Это что-то еще?
Во всяком случае, надеюсь, кто-то может меня прямо посадить...
Ответы
Ответ 1
Любой объект, который вы хотите, чтобы пользователи могли получать доступ через URI и выполнял операции CRUD (или некоторые его подмножества), может быть рассмотрен как ресурс. В смысле Rails это обычно таблица базы данных, которая представлена моделью и действует через контроллер.
Например, у вас может быть ресурс User
(с таблицей users
в вашей БД). Это представлено моделью User
, сопоставляется с users_controller
с map.resources :users
(которая затем генерирует маршруты, такие как /users
(коллекция пользовательских ресурсов) и /users/1
(определенный пользовательский ресурс).
Вы воздействуете на эти ресурсы, используя соответствующий метод HTTP при обращении к этим ресурсам. POST
для коллекции ресурсов (/users
) создает новую запись; GET
извлекает список ресурсов (/users
) или конкретного пользователя (/users/1
). PUT
обновляет конкретного пользователя (/users/1/
), а DELETE
уничтожает этого пользователя. URL-адреса совпадают, но результат (и действие контроллера) может отличаться в зависимости от HTTP-глагола. Идея состоит в том, что /users/1
всегда означает "я взаимодействую с пользователем, у которого есть ID # 1", независимо от действия.
Ответ 2
Здесь хорошая статья, в которой обсуждается, как большинство разработчиков считают, что "Ресурс" является сингулярным с таблицей базы данных, аргумент, я думаю, сопоставление с ресурсом сопоставляет контроллер с этой таблицей базы данных (или с ActiveResource, с другим URL-адресом REST).
В принципе, я считаю, что "ресурс" - это "сохраненные данные". map.resources
отображает 7 действий RESTful для определенного набора сохраняемых данных.
Но я не слишком много думал об этом. Хороший вопрос!
Ответ 3
откройте папку с вашей моделью, это намек на то, какие у вас есть ресурсы!
пример: пользователи, картинки, комментарии...
Ответ 4
Я думаю, что они, вероятно, означают это в общем смысле сети, т.е. Ресурс (Интернет):
референт любого унифицированного идентификатора ресурса
Я не думаю, что это имеет какое-то отношение к таблицам базы данных.
Ответ 5
Многие люди здесь говорят, что ресурсы ссылаются на таблицы базы данных, которые у вас есть. Иногда это может быть правдой, но не всегда правдой. Я мог бы привести множество примеров, когда в вашей базе данных нет соответствующей таблицы для определенного ресурса. Следовательно, связывать его с таблицами довольно неправильно.
Я бы определил ресурс как маршрут, который отображается на связанные запросы. Поэтому вместо того, чтобы объявлять отдельные маршруты для действий, которые вы хотите выполнить, вы можете просто объявить их с помощью находчивого маршрута. В Rails находчивый маршрут обеспечивает сопоставление между HTTP requests
и URLs
для controller actions
.
Допустим, вы определили resources :users
в config/routes.rb
Теперь вы можете использовать несколько помощников для контроллеров в вашем приложении, например edit_user_path
который возвращает users/edit
.
Ответ 6
Вот хорошая ссылка: https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html
Что в основном говорит: маршрутизация ресурсов позволяет вам быстро объявить все общие маршруты для данного находчивого контроллера. Вместо того, чтобы объявлять отдельные маршруты для вашего индекса, показывать, создавать новые, редактировать, создавать, обновлять и уничтожать действия, изобретательный маршрут объявляет их в одной строке кода:
ресурсы: фотографии