Ich habe Seiten-und Absatzmodelle mit einer has_and_belongs_to_many Beziehung. Bei einer Absatz-ID möchte ich alle übereinstimmenden Seiten erhalten. Beispiel:Efficient ActiveRecord has_and_belongs_to_many Abfrage
pages = Paragraph.find(paragraph_id).pages.all
Dies erfordert jedoch zwei Abfragen.
SELECT "pages".* FROM "pages"
INNER JOIN "pages_paragraphs" ON "pages_paragraphs"."page_id" = "pages"."id"
WHERE "pages_paragraphs"."paragraph_id" = 123
Aber kann dies ohne
- mit find_by_sql
- ohne Modifikationen an der page_paragraphs Tabelle (zum Beispiel eine ID Zugabe) durchgeführt werden: Es kann in einer Abfrage durchgeführt werden.
Update:
Meine Seite Modell wie folgt aussieht:
class Page < ActiveRecord::Base
has_and_belongs_to_many :paragraphs, uniq: true
end
@jdoe ich meine Frage geklärt haben, Dank für Ihre Bemühungen. –
Was ist das Problem mit zwei Abfragen? Gibt es ein komplizierteres Beispiel, das Sie zu optimieren versuchen, das wir nicht sehen? –
Nein, ich möchte nur die SQL in meiner Frage mit einer ActiveRecord-Abfrage ausführen. –