JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources

has_one SQL not using LIMIT when using include

Aperta
#750 3 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Type: Bug
Lingua principale
Ruby
Stelle
2.3k
Fork
546
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I have the following model:

class Foo < ActiveRecord::Base
  has_many :messages
  has_one :last_message, -> { order(created_at: :desc) }, class_name: 'Message'
end

and following resource:

class FooResource < JSONAPI::Resource
  has_one :last_message, class_name: 'Message'
end

When I request /foo/1/last-message it generates the following SQL:

SELECT  `messages`.* FROM `messages` WHERE `messages`.`foo_id` = 1  ORDER BY `messages`.`created_at` DESC LIMIT 1

But when I request /foo/1?include=last-message, the SQL doesnt append LIMIT

SELECT `messages`.* FROM `messages` WHERE `messages`.`foo_id` IN (1)  ORDER BY `messages`.`created_at` DESC

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

Riproduci le due richieste mostrate nell’issue e confronta l’SQL generato per la relazione diretta e la relazione inclusa. Segui il punto di ingresso del caricamento dell’include per trovare dove viene applicato lo scope has_one, quindi verifica che la query inclusa mantenga il limite a un singolo record e l’ordinamento.

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

Valutazione

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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.