ActiveRecord (Schienen): Wie führen Sie benutzerdefinierte SQL-joins in-Schienen ohne einen Verein?

Kann ich schreiben diese Abfrage, die berührt, 2 Tabellen und gibt mir die Ergebnisse, die ich will:

select inv.* from
item_to_sku its
left join inventory inv on its.sku_id=inv.sku_id
where its.item_id in (12345, 67890)

Und ich nahe kommen kann, um es in Rails mit diesem:

ItemToSku.includes(:sku => :inventory).find_all_by_item_id([12345, 67890])

Aber sinnlos beinhaltet die SKU-Tabelle in dieser. Da beide ItemToSku und Inventar sku_id, ich will einfach verbinden Sie Sie direkt zusammen wie in der SQL-version oben.

Ohne Zugabe verwirrend Verbände auf mein viele-zu-viele-Tabelle Modell (ItemToSku), wie kann ich Schreibe eine entsprechende ActiveRecordy Weg, dies zu tun? Ich Spiele schon mit .joins (), aber ich finde keine Beispiele für die Verwendung .Verknüpfungen ohne bestehenden Verbände. Der Hauptgrund, warum ich nicht wollen, erstellen die Verbände ist, dass es 20 Vereine auf Sku-und mehr auf den Punkt, und es scheint dumm zu duplizieren und sich somit vernebeln die wahren Zusammenhänge nur zum optimieren einer Abfrage.

InformationsquelleAutor XP84 | 2013-12-12
Schreibe einen Kommentar