我有具有 has_and_belongs_to_many 关系的 Page 和 Paragraph 模型。给定一个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 表(例如添加 id)。
更新:
我的页面模型如下所示:
class Page < ActiveRecord::Base
has_and_belongs_to_many :paragraphs, uniq: true
end