2017-05-11 50 views
0

我有兩個表PromoImage的Rails獲得第二條記錄連接的表

Promo具有ID和名稱

Image已經PROMO_ID名和img_url

assosiations =>宣傳片的has_many圖像

和我想從image表中獲取第二條記錄,其中promo_id 1,

for_example如果我這樣做Promo.first.images.second這是不好的perfomace 如果我的形象表中有很多記錄

所以我想我需要這樣的東西Promo.joins(:images).where('????')

回答

0

我想從圖像表中提取第二個記錄,其中PROMO_ID 1

既然你在images表有promo_id,沒有join需要:

Image.where(promo_id: 1).second 
#=> SELECT "images".* FROM "images" WHERE "images"."promo_id" = $1 ORDER BY "images"."id" ASC LIMIT $2 OFFSET $3 [["promo_id", 2], ["LIMIT", 1], ["OFFSET", 1]] 

如果你想也指定圖像id,只需將其添加到where

Image.where(promo_id: 1, id: 2) 
#=> SELECT "images".* FROM "images" WHERE "images"."promo_id" = $1 AND "images"."id" = $2 LIMIT $3 [["promo_id", 1], ["id", 2], ["LIMIT", 11]] 

這假定第二圖像id2

這兩個選項將生成一個簡單的查詢到您的數據庫,所以你不應該有性能問題(我也假設你已經在你的images表中設置索引)。

相關問題