JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Automatic include directives from filtering on a relationship column?
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
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?
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 dalla funzione apply_filters mostrata nell’issue e traccia il modo in cui apply_includes e IncludeDirectives gestiscono le inclusioni di relazioni richieste. Confronta il comportamento della risposta risultante con la specifica JSON:API, quindi determina e documenta se il filtraggio in base a una colonna di relazione debba restituire solo la risorsa di livello superiore o anche la relazione filtrata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- ruby
- Ambito
- api, backend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100