Ресурсы 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 позволяет это. Мне интересно, есть ли другой способ достичь того, что я ищу, или функция, которую я описываю, исключена по какой-либо причине (то есть потому, что она считается плохой практикой).

Кроме того, если это на самом деле считается плохой практикой, я хотел бы знать, почему это так.

0 ответов

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