I modelli di pagina e paragrafo hanno una relazione has_and_belongs_to_many. Dato un paragraph_id, mi piacerebbe avere tutte le pagine corrispondenti. ad esempioActiveRecord efficiente has_and_belongs_to_many query
pages = Paragraph.find(paragraph_id).pages.all
Tuttavia, questo richiede due query. Si può fare in una query:
SELECT "pages".* FROM "pages"
INNER JOIN "pages_paragraphs" ON "pages_paragraphs"."page_id" = "pages"."id"
WHERE "pages_paragraphs"."paragraph_id" = 123
Ma questo può essere fatto senza
- utilizzando find_by_sql
- senza modifiche alla tabella page_paragraphs (per esempio aggiungendo un id).
Aggiornamento:
Il mio modello pagina si presenta così:
class Page < ActiveRecord::Base
has_and_belongs_to_many :paragraphs, uniq: true
end
@jdoe ho chiarito la mia domanda, grazie per i vostri sforzi. –
Qual è il problema con due query? C'è un esempio più complicato che stai cercando di ottimizzare che non stiamo vedendo? –
No, voglio solo eseguire l'SQL nella mia domanda con una query activerecord. –