Что такое "ресурс" в Rails? - PullRequest
       0

Что такое "ресурс" в Rails?

68 голосов
/ 14 января 2011

Тупой вопрос, но у меня есть некоторая путаница с тем, что же такое «ресурс» в Rails.Термин используется повсеместно, но у меня возникает странное ощущение, что его можно использовать довольно свободно.На него ссылаются в модели, контроллере и, буквально, в routes.rb.

Это конкретный маршрут?Например, map.resources отображает 7 RESTful "ресурсов".Таким образом, примером одного ресурса будет вызов, скажем, действия index контроллера определенного класса?!?

Является ли это ссылкой на всю существующую страницу / объект?получен?или, может быть, более узко, таблица базы данных?или получаемый ряд?

Это что-то еще?

Во всяком случае, надеюсь, кто-то может исправить меня ...

Ответы [ 6 ]

85 голосов
/ 14 января 2011

Любой объект, к которому пользователи должны иметь доступ через 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», независимо от действия.

7 голосов
/ 14 января 2011

Вот хорошая статья , в которой обсуждается, как большинство разработчиков думают, что «Ресурс» является синонимом таблицы базы данных. Я полагаю, аргумент в том, что сопоставление с ресурсом отображает контроллер в эту таблицу базы данных (или, с ActiveResource, к другому URL REST).

По сути, я думаю, что «ресурс» - это «постоянные данные».map.resources сопоставляет 7 RESTful действий с определенным набором постоянных данных.

Но я не задумывался об этом слишком подробно.Хороший вопрос!

3 голосов
/ 17 сентября 2013

откройте папку с вашей моделью, это намек на то, какие ресурсы у вас есть! пример: пользователи, картинки, комментарии ...

2 голосов
/ 14 января 2011

Я думаю, что они, вероятно, имеют в виду это в общем смысле, то есть Resource (Web) :

референт любого универсального идентификатора ресурса

Не думаю, что это имеет какое-либо отношение к таблицам базы данных.

1 голос
/ 17 января 2019

Вот хорошая ссылка: https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html

Что в основном говорит: Маршрутизация ресурсов позволяет вам быстро объявить все общие маршруты для данного находчивого контроллера. Вместо того, чтобы объявлять отдельные маршруты для вашего индекса, показывать, создавать новые, редактировать, создавать, обновлять и уничтожать действия, изобретательный маршрут объявляет их в одной строке кода:

ресурсов: фотографии

0 голосов
/ 13 июля 2018

Многие люди здесь говорят, что ресурсы ссылаются на ваши таблицы базы данных. Иногда это может быть правдой, но не обязательно всегда. Я мог бы привести множество примеров, когда в вашей базе данных нет соответствующей таблицы для определенного ресурса. Следовательно, связывать это с таблицами довольно неправильно.

Я бы определил ресурс как маршрут, который отображается на связанные запросы. Таким образом, вместо того, чтобы объявлять отдельные маршруты для действий, которые вы хотите выполнить, вы можете просто объявить их с помощью находчивого маршрута. В Rails находчивый маршрут обеспечивает отображение между HTTP requests и URLs на controller actions.

Допустим, вы определили resources :users в config/routes.rb.
Теперь вы можете использовать несколько помощников для контроллеров в вашем приложении, например edit_user_path, что возвращает users/edit.

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