JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Related resources not backed by an association
Nessuno ha ancora preso questa issue.
- Lingua principale
- Ruby
- Stelle
- 2.3k
- Fork
- 546
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Hello, I'm curious to see if anyone is interested in allowing a resource to have a relationship that isn't necessarily an association to the underlying model. For example:
A Video has_many :tags. I've created an instance method (Video#related_videos) that pulls related videos based on a video's set of tags.
video.related_videos
=> [related_video_1, related_video_2]
What I'm interested in is having the corresponding VideoResource aware that this isn't an association it should be looking for, but rather public method. This would allow the following requests:
videos/:id?include=related_videos
videos/:id/relationships/related_videos
Currently, an InvalidInclude exception will be raised since "related_videos is not a valid relationship of videos." What if we were to pass a flag to relationship / has_many / has_one? Maybe there's a better way, but I was thinking something like:
VideoResource < JSONAPI::Resource
has_many :related_videos, instance_method: true
end
Would something like this be worth exploring? I'd be happy to work on a PR to support something like this if there's any interest.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia esaminando le dichiarazioni delle relazioni tra risorse (relationship, has_many e has_one) e il percorso InvalidInclude descritti nell'issue. Determina come un metodo pubblico come Video#related_videos potrebbe essere rappresentato ed esposto tramite le due richieste di esempio; i criteri di completamento richiedono un accordo sull'API e sul comportamento di validazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rails, ruby
- Ambito
- api, backend
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100