Ресурсы JSON API: как добавить действие контроллера на дочерний ресурс, которого нет на родительском?
В моем приложении на Rails я использую гем JSONAPI:Resources. у меня есть PurchaseOrder
модель, которая в настоящее время позволяет только index
а также show
действия, вот так:
with_options only: [:index, :show] do
jsonapi_resources :purchase_orders
end
Данные для создания заказов на поставку поступают из отдельной службы, поэтому я не хочу показывать новую конечную точку API для создания новых. Я, однако, хочу создать дочернюю модель под названием bolImage
("изображение коносамента"), и я хочу дать ему все выставленные в настоящее время конечные точки, которые PurchaseOrder
имеет плюс create
действие. Другими словами, я хочу иметь возможность вызывать следующие конечные точки:
GET /purchase_orders/:id/bol_images
POST /purchase_orders/:id/bol_images
GET /purchase_orders/:id/bol_images/:id
Я знаю, что могу создать совершенно отдельный родительский класс только для bol_images
, но я бы предпочел сохранить вложенные отношения, чтобы явным образом общаться через маршрут, что отношения между двумя моделями. Однако после прочтения раздела "Вложенные маршруты" в документах не ясно, что JSONAPI:Resources позволяет это. Мне интересно, есть ли другой способ достичь того, что я ищу, или функция, которую я описываю, исключена по какой-либо причине (то есть потому, что она считается плохой практикой).
Кроме того, если это на самом деле считается плохой практикой, я хотел бы знать, почему это так.