У меня есть модели страниц и абзацев с отношением has_and_belongs_to_many. Учитывая paragraph_id, я хотел бы получить все соответствующие страницы. например:.
pages = Paragraph.find(paragraph_id).pages.all
Однако это требует двух запросов. Это можно сделать в одном запросе:
SELECT "pages".* FROM "pages"
INNER JOIN "pages_paragraphs" ON "pages_paragraphs"."page_id" = "pages"."id"
WHERE "pages_paragraphs"."paragraph_id" = 123
Но это можно сделать без
- с помощью find_by_sql
- без изменений в таблице page_paragraphs (например, добавление идентификатора).
Update:
Моя модель страницы выглядит следующим образом:
class Page < ActiveRecord::Base
has_and_belongs_to_many :paragraphs, uniq: true
end