JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Add a hook for retrieving ActiveRecord fragments for included relationships

Aperta
#958 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

For example, if you have a resource UserResource with a method like this

def friends
   @model.friends.size
end

It will load user.friends separately for each model in the list. So you can optimise the query like this:

class self.records
    _model_class.all.includes(:friends)
end

Then when requesting GET /users/ it now works well. However, say if you request something like GET /groups/?include=users, the records method on UserResource is never called, so there is no query optimisation.

Instead of overriding self.apply_includes(records, options = {}) on each resource that has a relationship to UserResource, it would be nice to have a way to do this only once per resource.

@lgebhardt as discussed on Gitter

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia tracciando come GET /groups/?include=users raggiunge UserResource e confronta i percorsi records e apply_includes descritti nell’issue. Il lavoro è completato quando un hook a livello di risorsa può ottimizzare le relazioni incluse senza sovrascrivere apply_includes in ogni risorsa correlata, evitando al contempo query separate per ogni modello.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rails, ruby
Ambito
api, backend, database
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.