Rails 4,SQLite 3:Acts as Votable - 上周为upvotes排序

时间:2016-10-16 19:14:41

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

我希望显示过去7天内投票最多的项目 这样我就可以获得最受欢迎的项目(所有时间):

@items = Item.all.order(cached_votes_up: :desc)

item.rb的

class Recipe < ActiveRecord::Base

    belongs_to :user
    acts_as_votable

end

有没有办法在上周获得最受欢迎的项目?

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

基于我刚才使用宝石时的记忆,我这样做。

您有两个表itemsvotes,如果使用了acts_as_votable gem,默认情况下会创建投票。

将两张桌子加在一起
@join_table = Item.joins('INNER JOIN votes ON votes.votable_id = items.id')

//我在使用gem时没有使用cached_votes_up。我不知道它存储了什么,它是什么。如果有效,请继续下面。

加入表后,现在我们需要过滤掉过去7天评分的项目。
@filter_table = @join_table.order(cached_votes_up: :desc).where(:updated_at => 7.day.ago..Time.now)

您可能需要稍微修改,因为我没有确切的表属性。 如果这是你想要的,请告诉我。