JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Automatic include directives from filtering on a relationship column?
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
In the apply filters function:
def apply_filters(records, filters, options = {})
required_includes = []
if filters
filters.each do |filter, value|
if _resource_klass._relationships.include?(filter)
if _resource_klass._relationships[filter].belongs_to?
records = apply_filter(records, _resource_klass._relationships[filter].foreign_key, value, options)
else
required_includes.push(filter.to_s)
records = apply_filter(records, "#{_resource_klass._relationships[filter].table_name}.#{_resource_klass._relationships[filter].primary_key}", value, options)
end
else
records = apply_filter(records, filter, value, options)
end
end
end
if required_includes.any?
records = apply_includes(records, options.merge(include_directives: IncludeDirectives.new(_resource_klass, required_includes, force_eager_load: true)))
end
records
end
I noticed there is a line where the filtered relationships are then added as includes which then get returned.
if required_includes.any?
records = apply_includes(records, options.merge(include_directives: IncludeDirectives.new(_resource_klass, required_includes, force_eager_load: true)))
end
This means that I can never just filter on a relationship column but just return the top level object, I have to return the whole filtered relationship as well.
Is that right? Is that in accordance with the JSON API spec?
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 la fonction apply_filters présentée dans l’issue et suivez la manière dont apply_includes et IncludeDirectives gèrent les inclusions de relations requises. Comparez le comportement de réponse qui en résulte avec la spécification JSON:API, puis déterminez et documentez si le filtrage par une colonne de relation doit renvoyer uniquement la ressource de niveau supérieur ou également la relation filtrée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- ruby
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 30/100