计算页面加载的Feed的排名

时间:2014-08-06 18:50:55

标签: ruby-on-rails ruby-on-rails-4

我通过this site上的upvotes对API进行排名。

我计算每个页面加载的分数。这是昂贵且缓慢的并且页面加载花费约5秒。

有更有效的方法吗?每次创建新帖子时,是否需要使用后台作业重新排除所有内容?每次提交投票以及每次帖子变老一小时后,情况如何?

这似乎是在排名依赖于时间+投票的任何网站上的常见问题。

1 个答案:

答案 0 :(得分:0)

如果您可以提供有关您的模型和排名系统的一些信息,我可以改进这个答案,但这是我的建议,基于您迄今为止提供的信息:

在AR模型上创建一个名为count的列。

创建新的Api对象时,将count列设置为0。当它被投票时,请执行以下操作:

def upvote
  @api = Api.find_by_id(params[:id])
  new_count = @api.count + 1
  @api.update_attributes(:count => new_count)
end

你可以为downvotes做相反的事。

然后在你的视图中,只需在循环中执行此操作:

<% @apis.each do |api| %>
  <%= api.count %>
<% end %>

这将停止计算页面加载,并只从数据库中提取一个值。希望这对网站有帮助,并且很酷。如果你想使用我迄今为止非常喜欢的宝石,Thumbs Up是个不错的选择。