在我的应用程序中,我试图按过去 10 天内的视图对项目进行排序。我正在使用印象派 gem,它创建了一个名为印象的模型并在此处记录每个视图。
我设法得到了这段代码:
@items = Item.joins("left join impressions on impressions.impressionable_id = items.id and impressions.impressionable_type = 'Item'")
.select("count(distinct(ip_address)) as counter, impressionable_id, items.title, items.id, items.image")
.group('items.id')
.order("counter desc")
.page(params[:page])
.per_page(9)
这将按总唯一视图对项目进行排序。但是,我只想计算过去 10 天内的展示次数。这导致我添加了where
这样的方法:
time_range = (Time.now - 10.days)..Time.now
@items = Item.joins("left join impressions on impressions.impressionable_id = items.id and impressions.impressionable_type = 'Item'")
.select("count(distinct(ip_address)) as counter, impressionable_id, items.title, items.id, items.image")
.where('impressions.created_at' => time_range)
.group('items.id')
.order("counter desc")
.page(params[:page])
.per_page(9)
但是,这不包括没有视图的项目,这不是我想要的。这些应该用 0 视图表示。
任何建议如何解决这个问题?