Support for has_many-through with a join table that "has many targets"
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start by running the Ruby reproduction against the in-memory SQLite database and compare the generated SQL with the expected joins. Trace the association handling for bookings, tickets, and passes; done means the second join uses the tickets-to-passes relationship rather than repeating the bookings-to-tickets condition.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
require 'rom'
require 'sqlite3'
rom = ROM.container(:sql, 'sqlite::memory') do |conf|
conf.default.create_table(:bookings) do
primary_key :booking_id
end
conf.default.create_table(:tickets) do
primary_key :ticket_id
column :booking_id, Integer
end
conf.default.create_table(:passes) do
primary_key :pass_id
column :ticket_id, Integer
end
conf.relation(:bookings) do
schema(infer: true) do
associations do
has_many :tickets
has_many :passes, through: :tickets
end
end
def with_passes
join(passes)
end
end
conf.relation(:tickets) do
schema(infer: true) do
associations do
belongs_to :booking
has_many :passes
end
end
end
conf.relation(:passes) do
schema(infer: true) do
associations do
belongs_to :tickets
end
end
end
end
joined = rom.relation(:bookings).join(rom.relation(:passes))
Expected SQL:
SELECT `bookings`.`booking_id`
FROM `bookings`
INNER JOIN `tickets` ON (`bookings`.`booking_id` = `tickets`.`booking_id`)
INNER JOIN `passes` ON (`tickets`.`ticket_id` = `passes`.`pass_id`)
ORDER BY `bookings`.`booking_id`
Actual SQL:
SELECT `bookings`.`booking_id`
FROM `bookings`
INNER JOIN `tickets` ON (`bookings`.`booking_id` = `tickets`.`booking_id`)
INNER JOIN `passes` ON (`bookings`.`booking_id` = `tickets`.`booking_id`)
ORDER BY `bookings`.`booking_id`
- Lingua principale
- Ruby
- Stelle
- 220
- Fork
- 97
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
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 rom-rb/rom-sql
-
bug help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
-
bug help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
bug help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
-
bug help wanted
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
-
bug help wanted
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di rom-rb/rom-sql
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
akitaonrails/ai-book-2026#12 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
openfoodfoundation/openfoodnetwork#14970 ·
I maintainer di solito rispondono entro 1 giorno
-
JWT::EncodedToken raises TypeError for a non-object headerForse già presa @anakinj l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jwt/ruby-jwt#780 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
Freika/dawarich#3978 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno