如何使用较少的SQL查询对此进行编码?

时间:2013-08-07 07:40:08

标签: ruby-on-rails ruby-on-rails-3

这些代码输出2个sql查询。

@trackings = Tracking.where(:target_user_id => current_user.id ).page(params[:page]).per(10)
@trackings_count = Tracking.where(:target_user_id => current_user.id ).count

为了减少它,我该如何编码?

这样的事情?

@trackings = Tracking.where(:target_user_id => current_user.id )
@trackings_count = @trackings.count
@trackings = @trackings.page(params[:page]).per(10)

2 个答案:

答案 0 :(得分:1)

使用counter_cache。它可以帮助您保存多个查询。您无需为count执行另一个查询。

http://railscasts.com/episodes/23-counter-cache-column

答案 1 :(得分:1)

我的解决方案(一个查询)。我想你使用kaminari gem:

@trackings = Tracking.where(:target_user_id => current_user.id).to_a
@trackings_count = @trackings.length
@trackings = Kaminari.paginate_array(@trackings).page(params[:page]).per(10)