2013-06-12 50 views
0

我有一個這樣的模型方法對一個名爲「運動」模式,而每個廣告有很多的服裝:我可以在rails中映射id時指定where子句嗎?

def generate 
ids = self.outfits.map(&:id) 
outfit1 = Outfit.find ids.sample 

begin 
    outfit2 = Outfit.find ids.sample 
end while outfit2.id == outfit1.id 

return [outfit1, outfit2] 
end 

的衣服也有屬性'scraped''status'。我只想映射價值爲scraped = truestatus == 'approved'的廣告系列服裝的ID。

+0

你的代碼到目前爲止做了什麼?它看起來有點奇怪:) .. ids.sample是什麼意思?你在競選和裝備之間是否有1:n的關係,並且只想得到一個真實並獲得批准的競選活動的服裝?這是你的問題嗎? – Mattherick

+0

ids.sample將從數組中返回一個隨機元素。那是你要的嗎? – plasticide

+0

是的,所以基本上我希望ids數組只包含身份被批准和刮取== true的服裝的ID。然後我想對該數組進行採樣以獲得裝備對象。該方法的總體目標是兩個生成屬於該活動的兩個獨特服裝,然後返回它們。那有意義嗎? – xxyyxx

回答

2

我應該在軌最初安慰自己剛纔測試了這一點,

self.outfits.where(:scraped => true).where(:status => 'Approved').map(&:id)

的伎倆。

+0

如果有效,請接受您自己的答案。 – Arkan

+0

我無法立即接受我自己的回答,我需要等待2天。 – xxyyxx

+4

更好地使用.pluck(:id)而不是map(&:id)。它更高效,因爲它在db級別上工作,所以它不會爲每個裝備創建一個實例,也不必爲了獲得id而遍歷它們。只是一個性能改進:) –

相關問題