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