8
Rails: include vs. : joins
นี่เป็นคำถามที่ว่า "ทำไมสิ่งต่าง ๆ ถึงทำงานแบบนี้" มากกว่าคำถามที่ว่า "ฉันไม่รู้จะทำอย่างไร" ดังนั้นพระกิตติคุณในการดึงบันทึกที่เกี่ยวข้องที่คุณรู้ว่าคุณจะใช้คือการใช้:includeเพราะคุณจะได้เข้าร่วมและหลีกเลี่ยงการสืบค้นเพิ่มเติม: Post.all(:include => :comments) อย่างไรก็ตามเมื่อคุณดูล็อกจะไม่มีการเข้าร่วมเกิดขึ้น: Post Load (3.7ms) SELECT * FROM "posts" Comment Load (0.2ms) SELECT "comments.*" FROM "comments" WHERE ("comments".post_id IN (1,2,3,4)) ORDER BY created_at asc) มันเป็นทางลัดเพราะมันดึงทุกความคิดเห็นในครั้งเดียว แต่ก็ยังไม่เข้าร่วม (ซึ่งเป็นสิ่งเอกสารทั้งหมดที่ดูเหมือนว่าจะพูด) วิธีเดียวที่ฉันจะเข้าร่วมได้คือใช้:joinsแทน:include: Post.all(:joins => :comments) และบันทึกแสดง: Post Load (6.0ms) SELECT "posts".* FROM "posts" INNER JOIN …