0

这些代码输出 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)
4

2 回答 2

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)
于 2013-08-07T09:00:26.813 回答
1

使用 counter_cache。它将帮助您保存多个查询。您无需为计数运行另一个查询。

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

于 2013-08-07T08:10:46.803 回答