2
在有3个车型在这里:在Rails中 - 如何让一个查询有多个查询?
- 项目
- 线程(PROJECT_ID)
- thread_participations(thread_id单,阅读布尔)
现在我有用户的项目清单,并该列表显示每个项目有多少个线程未读。这里的一个巨大的问题是,如果用户有多个项目(所有用户都这样做),它会导致数据库遇到几个查询,每个项目一个查询。
我想使用Rails建立一个查询,在一个数据库命中的情况下,为每个用户的项目返回一个未读数。
这就是我今天使用的视图:
<% @projects.each_with_index do |project, i| %>
<%=project %>: <%= Thread.unread(current_user,project).count %>
<% end %>
而在线程模型:
scope :unread, lambda { |user,project|
includes(:project,:thread_participations).where(:project_id => project.id, :thread_participations => {:read => false, :user_id => user.id})
}
关于如何做到这一点有什么建议?这也应该住在哪个模型?也许用户的模型,因为它不是项目或线程特定的?
感谢
谢谢,我不确定我是否遵循100%,所以让我问一下......为什么在ThreadParticipations中有未读范围,而不是像现在这样拥有Thread?只是好奇。此外,第二个块(ThreadParticipations .unread(current_user ...)在哪里,生活?控制器?thxs – AnApprentice 2011-02-05 22:31:55