【发布时间】:2012-11-29 11:49:19
【问题描述】:
我有具有 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
【问题讨论】:
-
@jdoe 我已经澄清了我的问题,感谢您的努力。
-
两个查询有什么问题?有没有我们没有看到的更复杂的示例?
-
不,我只想使用 activerecord 查询执行我的问题中的 SQL。
标签: ruby-on-rails activerecord has-and-belongs-to-many