Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 减少sql查询_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 减少sql查询

Ruby on rails 减少sql查询,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有3个实体: 项目、关键字、报告 这个项目有很多关键词 关键字有很多项目 项目和报告有许多报告 在关键字索引中,我对过去7天以及当天的所有关键字的报告进行了局部搜索。我在这里遇到的问题是多个查询,如何避免这种情况 <%=render @keywords%> 谢谢显然,您需要从3天前到今天的记录。为什么不在一个查询中添加一个作用域来构建这个WHERE子句呢?然后,您只需循环查询结果的关键字,以适当地显示它们,而不是启动4个查询 scope:latest,->(date){where

我有3个实体: 项目、关键字、报告 这个项目有很多关键词 关键字有很多项目 项目和报告有许多报告

在关键字索引中,我对过去7天以及当天的所有关键字的报告进行了局部搜索。我在这里遇到的问题是多个查询,如何避免这种情况

<%=render @keywords%>

谢谢

显然,您需要从3天前到今天的记录。为什么不在一个查询中添加一个作用域来构建这个WHERE子句呢?然后,您只需循环查询结果的关键字,以适当地显示它们,而不是启动4个查询


scope:latest,->(date){where(“date(created_)BETWEEN?AND?”,date-3.days,date)}

今天的项目是什么样子的
它是一个scope
->(date){where(“date(created_)at=?”,date)
<%=keyword.reports.find_today_project_k(Date.today).find_each do |keyword_r|%>
   [<%=keyword_r.pos%>]
<%end%>                  
<%=keyword.reports.find_today_project_k(Date.today - 1.day).find_each do |keyword_r|%>
   [<%=keyword_r.pos%>]
<%end%>
<%=keyword.reports.find_today_project_k(Date.today - 2.day).find_each do |keyword_r|%>
  [<%=keyword_r.pos%>]
<%end%>
<%=keyword.reports.find_today_project_k(Date.today - 3.day).find_each do |keyword_r|%>
  [<%=keyword_r.pos%>]
<%end%>   
@keywords = project.keywords.page(params[:page])