我有大约500个网点。每个插座每天至少监视一次。我正在尝试获取每天都进行监控的网点列表。我有此刻的查询问题Rails 3.2查询 - .exists?
,任何帮助表示赞赏:
<% for outlet in @outlets %>
<% if Monitoring.exists?(:outlet_id => outlet.id, 'DATE(created_at) = ?', Date.today) %>
的@outlets是包含Outlet.all一个实例变量。
此查询给我留下语法错误。什么是正确的方法来做到这一点?我试图检查监控是否属于Outlet,并且监控记录是在今天创建的。
此外,我不完全确定此查询的速度影响。一次最多可以在一个页面上创建2000个网点(这是一个仪表板,因此它们显示为红色或绿色点)。
任何帮助极大的赞赏。
谢谢,你是对的,我不能相信我错过了。关于多次访问数据库的性能,您完全正确。我真的不知道'counts = Monitoring.where('date(created_at)=?',Date.today).count(:group =>:outlet_id)'是如何工作的,能否请你进一步解释一下,看起来很有趣! – Ammar 2012-03-28 21:38:21
@Ammar:这个想法是为今天的每个'outlet_id'计算所有的匹配,并且你可以在一个查询中做到这一点(即在命中数据库时)。结果将只有“存在?”将返回true的条目。 – 2012-03-28 22:16:09
我将如何使用'counts.has_key? outlet.id'我从来没有遇到过这样的事情,所以请原谅我稍微不清醒:P感谢迄今为止的帮助! – Ammar 2012-03-28 22:47:08