JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Related resources not backed by an association
Personne n'a encore pris cette issue.
- Langage dominant
- Ruby
- Étoiles
- 2.3k
- Forks
- 546
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner les déclarations de relations entre ressources (relationship, has_many et has_one) ainsi que le chemin InvalidInclude décrits dans l’issue. Déterminez comment une méthode publique telle que Video#related_videos pourrait être représentée et exposée via les deux requêtes d’exemple ; les critères de réalisation exigent un accord sur l’API et le comportement de validation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- rails, ruby
- Domaine
- api, backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100