我正在尝试根据用户查看位置的次数来订购位置列表。为此,我正在使用印象派宝石。
我遇到的问题是我的查询完全排除了用户从未查看过的那些位置。我需要在结果的底部显示这些,并按 created_at 时间戳排序。
我可以这样做来获取 location_ids 列表:
@location_ids = @user.impressions.
select('count(id) as counter, impressionable_id').
group(:impressionable_id).
order('counter DESC').
@location_ids.map(&:impressionable_id)
这给出了 [3,5,8,44,99] 等等..
但是,这并没有让我走得太远,所以我尝试了这个:
@user.locations.
joins(:impressions).
select("count(impressions.id) as counter, impressionable_id, locations.location_name, locations.id").
group(:impressionable_id).
order("counter desc")
哪个更好,但它忽略了那些视图为零的位置。
我该怎么做才能获得所有位置?