JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Related resources not backed by an association

Ouverte
#545 4 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.