rails-mysql连接多个表
我正在做一个基本的报告rails-mysql连接多个表,mysql,ruby-on-rails,ruby-on-rails-2,Mysql,Ruby On Rails,Ruby On Rails 2,我正在做一个基本的报告 显示包含姓名、年龄等详细信息的用户列表 还显示其他详细信息,如帖子数量、上次活动时间等 所有这些其他细节与用户有很多关系 这就是我现在正在做的: User.find( :all, :select => "users.id, users.name, count(distinct(posts.id)) as posts_count", :joins => "left outer join posts
- 显示包含姓名、年龄等详细信息的用户列表
- 还显示其他详细信息,如帖子数量、上次活动时间等
- 所有这些其他细节与用户有很多关系
User.find(
:all,
:select => "users.id, users.name, count(distinct(posts.id)) as posts_count",
:joins => "left outer join posts on posts.user_id = users.id",
:group => "users.id",
:limit => "100"
)
已为posts表中的用户id列编制索引
我的问题是,这样做需要很长时间,当我试图做更多的表以及诸如活动、评论等帖子时,有时会挂起
有没有一种单独加入计数的方法或者其他方法来实现这一点
提前感谢我认为其中一个可能有效,但与往常一样,在执行外部联接时,查询速度会变慢
User.count(:include=>[:posts])
User.count(:select => "users.id, users.name, count(distinct(posts.id)) as posts_count",
:joins => "left outer join posts on posts.user_id = users.id",
:group => "users.id")
User.find(:all, :include => [:posts])
您还可以将初始值设定项文件或irbrc文件放入以下文件:
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.clear_active_connections!
并在控制台中键入查询时检查查询
用于员额计数
User.all.posts.size
至于以后报告每个帖子数量,您可以使用已有的用户记录来完成
@users = User.find(:all, :include=> [:posts])
后来
<% @users.each do |user|
Posts: <%= user.posts.size %>
<% end %>
您认为我应该如何计算帖子数量?对不起,如果我问的是非常基本的问题,那么这种方法有一个问题。。如何根据帖子的数量对用户进行排序?我宁愿不使用ruby对用户进行排序,而是将其卸载到数据库中
@sorted_users = @users.sort_by{|user| user.posts.size }