JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

Add a hook for retrieving ActiveRecord fragments for included relationships

Offen
#958 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Ruby
Sterne
2.3k
Forks
546
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit nachzuverfolgen, wie GET /groups/?include=users zu UserResource gelangt, und vergleiche die im Issue beschriebenen records- und apply_includes-Pfade. Die Arbeit ist abgeschlossen, wenn ein Hook auf Ressourcenebene enthaltene Beziehungen optimieren kann, ohne apply_includes für jede verwandte Ressource überschreiben zu müssen und ohne separate Abfragen für jedes Modell zu verwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rails, ruby
Bereich
api, backend, database
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.