JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
has_one SQL not using LIMIT when using include
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Ruby
- Sterne
- 2.3k
- Forks
- 546
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere die beiden im Issue gezeigten Anfragen und vergleiche das generierte SQL für die direkte Beziehung und die inkludierte Beziehung. Verfolge den Einstiegspunkt zum Laden des include, um herauszufinden, wo der has_one-Scope angewendet wird, und überprüfe anschließend, dass die Abfrage für die inkludierte Beziehung das Limit auf einen einzelnen Datensatz und die Sortierung beibehält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rails, ruby
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100