Methods defined on `PrivateRelation` should return `T.self_type`
I maintainer di solito rispondono entro 4 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia esaminando i compilatori rilevanti che aggiungono metodi a PrivateRelation e al model, quindi traccia come viene generato il tipo restituito per .all. Verifica il comportamento con l'esempio di Kaminari, incluso il concatenamento di .all e la conservazione dei metodi estesi della relation. Il lavoro è concluso quando il tipo generato riflette il self type della relation senza perdere i metodi aggiunti al model.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I wrote a compiler for Kaminari that returns the following:
sig { T.all(PrivateRelation, Kaminari::PageScopeMethods, Kaminari::ActiveRecordRelationMethods) }
def page(num = nil); end
This type is accurate, since .page uses .extending to add methods to the relation.
This works:
User.page(5).total_count
This doesn't work:
User.page(5).all.total_count
^^^^^^^^^^^ Method `total_count` does not exist on `User::PrivateRelation`
That's because the return type of for .all is PrivateRelation. We could fix this problem by using T.self_type instead, which I believe more accurately captures the way ActiveRecord works.
The way that relevant compilers are currently implemented makes this a little tricky, since the methods that are being added to the PrivateRelation are also added to the model. The methods defined on the model should be PrivateRelation.
- Lingua principale
- Ruby
- Stelle
- 874
- Fork
- 166
- Merge medio
- 5g 12h
- PR unite (30g)
- 11
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
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.
Altre issue di Shopify/tapioca
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Shopify/tapioca#2662 · 1 commento ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 57/100
I maintainer di solito rispondono entro 4 giorni
-
Improve `check-shims` performanceForse già presa @KaanOzkan l’ha presa 13 giorni fa. Aperta
Shopify/tapioca#2728 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
I maintainer di solito rispondono entro 4 giorni
-
Prepending a module can cause `tapioca dsl` to produce an untyped signatureForse già presa @KaanOzkan l’ha presa 48 giorni fa. Apertabug
Shopify/tapioca#2705 · 1 assegnatario ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di Shopify/tapioca
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 8 giorni
-
bug: "Conversation information" accordion renders blank with 0px height when conversation has no attributesForse già presa @gihovani l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 2 giorni
-
`hanami generate repository` would be a nice alias for `hanami generate repo`Forse già presa @sandbergja l’ha presa oggi. Apertabug help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
hanami/hanami-cli#455 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
asciidoctor/asciidoctor#4882 · 4 commenti ·