Ruby / Rails - 查找模型中大多数实例的外键

时间:2011-02-22 19:39:19

标签: ruby-on-rails ruby foreign-keys

我有一个联合模型,它具有模型事件的外键。

联合模型称为目标。我正在尝试找到正确的查找条件,以确定哪个event_id在目标连接模型中具有最多实例。重要的是哪个外键id在连接模型中具有最多的条目。

有办法做到这一点吗?

 Goal.where(:event.id => ??????? ).first

2 个答案:

答案 0 :(得分:1)

无法提出更优雅的解决方案,但请尝试以下方法:

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,您也可以使用:

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

答案 1 :(得分:0)

如果您已正确设置模型,则应该能够执行此操作(如果不是这样的话:正确设置模型):

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

Danny的解决方案并不是很好。

你永远不应该(或者至少很少)必须自己在rails中编写sql。