【问题标题】:Rails 4, SQLite 3: Acts as Votable - Sort for upvotes last weekRails 4、SQLite 3:充当投票者 - 上周对投票进行排序
【发布时间】:2017-02-25 17:29:21
【问题描述】:

我想显示过去 7 天中最受好评的项目。
这样我就能够(一直)获得最受好评的项目:

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

item.rb

class Recipe < ActiveRecord::Base

    belongs_to :user
    acts_as_votable

end

有没有办法获得上周投票最多的项目?

感谢任何帮助。谢谢。

【问题讨论】:

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


    【解决方案1】:

    我是根据我不久前使用 gem 时的记忆来做这个的。

    您有两个表,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 =&gt; 7.day.ago..Time.now)

    您可能需要稍作修改,因为我没有确切的表格属性。 让我知道这是否是你想要的。

    【讨论】:

    • 我不知道,但据我了解,该代码仅搜索在过去 7 天内至少获得 1 次支持的项目,然后根据他们的历史支持率对这些项目进行排序。相反,我只想计算过去一周的投票数。如果我错了,请告诉我。 :-)
    • @Gugubaight 如果你想计算它,你应该使用count。然后它将返回过去 7 天的计数值。
    • 那行不通,因为我得到一个整数,但我想得到排序的对象,以便我可以遍历它们
    • 我想我终于明白了你想要做什么。您有两个表,itemsvotes 表,因为您使用的是 Acts_as_Votable gem(votes 表由 gem 生成)。您正在尝试查找过去 7 天内哪个项目的投票数最多。在这种情况下,您必须同时加入 itemsvotes 表才能获取项目。我得到你想要做的事情了吗?
    • 耶!就是这样:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多