我正在为我的 Rails 应用程序制作一个非常基本的分析功能。我想提供统计数据,告诉用户有多少访问者查看了他们的个人资料,然后还根据每个访问者拥有的特定角色(我在我的应用程序中使用“rolify”)对这些数据进行细分。
在用户控制器的显示动作中,我这样做
@profileviews = Profileview.where(:user_id => @user.id)
@profileviewsbysomerole = Profileview.where({:user_id => @user.id, :viewer_role => 'someRole'})
@profileviewsbysomeotherrole = Profileview.where({:user_id => @user.id, :viewer_role => 'someOtherRole'})
然后在表演动作中,我会做
Your profile has been viewed <%= @profileviews.size %> times.
Your profile has been viewed by users with a particular role <%= @profileviewsbysomerole.size %> times.
Your profile has been viewed by users with some other role <%= @profileviewsbysomeotherrole.size %> times.
有没有办法在不进行三个单独查询的情况下完成我想要做的事情,或者这是获得这些统计数据的最佳方式(就不降低性能而言)。