我有3个实体: 项目,关键字,报告 项目has_many关键字 关键字has_many项目 项目和报告has_many报告
在关键字索引中,我会将过去7天内所有关键字的报告加上当前日期的部分报告。我在这里遇到的问题是多个查询,我怎么能避免这个?
<%=render @keywords%>
部分:
<%=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])
谢谢
答案 0 :(得分:0)
显然,您需要从3天到今天的记录。为什么不在一个查询中添加构建此WHERE子句的作用域?然后,您只需循环查询结果的关键字即可正确显示它们,而不是发出4个查询。
scope :latest, ->(date){ where("DATE(created_at) BETWEEN ? AND ?", date - 3.days, date) }