我有一個has_and_belongs_to_many關係的頁面和段落模型。鑑於一個paragraph_id,我想獲得所有匹配的頁面。例如:高效的ActiveRecord has_and_belongs_to_many查詢
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。 –