2011-08-09 49 views
14

我有一個Collection類有很多硬幣。 我想選擇有兩個以上硬幣的集合。 目前,我沒有問題通過直接Ruby來做到這一點,但這是非常低效的。如何在Rails 3中加入表格和計數記錄?

我當前的代碼:

collections = Collection.all.select { |c| c.coins.count > 2 } 

如何做到這一點通過joins呼叫與阿雷爾?

謝謝!

+0

你不應該使用收集的類名......有幾個紅寶石建在需要集合結構(例如軌道模型集合),它可能發生,你忽略一些事情,導致意外的行爲.. – Lichtamberg

+2

感謝小費。任何想法如何創建'加入'? –

回答

23

要回答我的問題:

Collection.joins(:coins).group("coins.collection_id").having("count(coins.id) > 2") 

帽尖到KJF誰問this similar questionkrakover回答它。

1

添加counter_cache列並查詢它們。

http://railscasts.com/episodes/23-counter-cache-column

+1

謝謝。計數器緩存意味着在運行中保存計數記錄。鑑於我的藏品只包含2-5個硬幣,這不是問題,我寧願不在數據庫中存儲單獨的列。任何想法如何使用Rails 3編寫'連接'查詢? –