我正在尝试按观看次数对节目列表进行排名。
现在,我有一个 Program 模型和一个属于该程序的 Views 模型。
在 Views.rb 我创建了一个 counter_cache:
belongs_to :program, counter_cache: :views_count
我可以使用 .views_count 对程序进行排序。然而,views_count 一直在更新,所以一个节目在 2 年前观看了 200 次,而今年根本没有观看,其排名将高于过去一个月观看 30 次的节目。
我希望能够指定在计算 views_count 时我只想考虑过去 30 天内发生的视图。
我尝试创建一个程序模型方法 recent_views 并在控制器中使用 sort_by ,但是它花费的时间太长并且经常超时。现在,我正在将 views_count 用于最近更新的程序,但这并不能解决这个问题。
在模型中是否有一种简单的方法可以做到这一点?
有没有办法创建一个单独的 counter_cache 只包括过去 30 天?