Я использую ActiveResource
для извлечения объектов из внутреннего API
Этот API имеет следующее (упрощенное):
class Project < ApplicationRecord
has_many :contributions
...
end
class Contribution < ApplicationRecord
belongs_to :project
belongs_to :user
...
end
class User < ApplicationRecord
has_many :contributions
...
end
и маршруты, поэтому вклады могут создаваться только связаннымив проект
resources :projects, except: [:new, :edit] do
resources :contributions, except: [:new, :edit, :destroy]
end
resources :users, except: [:new, :edit] do
resources :contributions, only: [:index, :show]
end
resources :contributions, only: [:index, :show, :update]
Можно ли предоставить динамический префикс, чтобы я мог выборочно переходить по этим путям?т.е. projects/:project_id/contributions
при создании, но /contributions
при индексировании (все).
РЕДАКТИРОВАТЬ:
Все мои активные ресурсы выглядят так:
class Contribution < ActiveResource::Base
self.site = "#{base_url}/api/v1/"
self.headers['Authorization'] = "Token token=\"#{TokenGenerator}\""
...
end
Не оченьКастомизация там.
Больше всего меня беспокоит создание post
, которое я хотел бы всегда вкладывать в проект.
В данный момент я проверяю параметры в маршруте /contributions
, чтобы выяснить,в них есть какой-либо жизнеспособный 'parent_id', и выясняется, существует ли указанный родительский элемент.
Я предполагаю, что камень не был разработан с идеей ресурса, имеющего несколько маршрутов.Я всегда могу включить:
class Project ActiveResource::Base
self.site = "#{base_url}/api/v1/"
self.headers['Authorization'] = "Token token=\"#{TokenGenerator}\""
...
def contributions
Contributions.all(params: {project_id: id})
end
end
внутри Projects.rb
и убедиться, что контроллер API знает, как обращаться с родителями, если они существуют, но только потому, что у меня есть доступ к источнику как API, так и пользовательского приложения.,
тоже стоит спросить: я просто слишком усложнил это?