我有一個模型事件的外鍵的連接模型。Ruby/Rails - 查找模型中大多數實例的外鍵
加入的模型被稱爲目標。我試圖找到適當的查找條件來確定哪個event_id在目標加入模型中具有最多的實例。 Essenially哪個外鍵id在連接模型中的條目最多。
有沒有辦法做到這一點?
Goal.where(:event.id => ???????).first
我有一個模型事件的外鍵的連接模型。Ruby/Rails - 查找模型中大多數實例的外鍵
加入的模型被稱爲目標。我試圖找到適當的查找條件來確定哪個event_id在目標加入模型中具有最多的實例。 Essenially哪個外鍵id在連接模型中的條目最多。
有沒有辦法做到這一點?
Goal.where(:event.id => ???????).first
無法拿出一個更優雅的解決方案,但嘗試這個辦法:
results = Goal.connection.select_all('SELECT COUNT(*) as amount, event_id FROM goals GROUP BY event_id ORDER BY amount DESC LIMIT 0, xx')
raise results.inspect
如果你只是想一個最事項標識與您還可以使用大部分條目:
event_id = Goal.connection.select_one('SELECT COUNT(*) as amount, event_id FROM goals GROUP BY event_id ORDER BY amount DESC LIMIT 1').first
如果您已正確設置模型,則應該可以執行此操作(如果情況並非如此:正確設置模型):
if Event.all.length == 0
return
end
eventMax = Event.first
Event.all.each do |e|
eventMax = e.goals.length>eventMax.goals.length?e:eventMax
end
#output or do whatever with your newly found event
puts eventMax.to_json
丹尼的解決方案並不是很好。
你永遠不應該(或者至少很少)不得不自己在rails中編寫sql。
如果我正確地理解了這個問題,那麼你想要的是最具目標的事件。 – Automatico 2012-07-07 13:12:34
你可以給我們你有關模型的代碼嗎? – corroded 2011-02-22 19:43:44