如何依靠rails中public_activity动作的唯一记录?

时间:2017-01-02 23:34:36

标签: ruby-on-rails rails-activerecord

我正在使用public_activity gem。

@num = PublicActivity::Activity.where(owner_id: current_user.id, key: "micropost.read").count

这将正确显示current_user在所有微博上读取的次数。但是,如果current_user已经读取了相同的微博多次,那么它也将计算这些数字。但我不希望这样。如果current_user多次读取相同的微博,我只想算一次。

我试过了

@num = PublicActivity::Activity.where(owner_id: current_user.id, key: "micropost.read").distinct.count

它没有显示任何错误消息,但它不起作用。

我试过了

@num = PublicActivity::Activity.distinct.where(owner_id: current_user.id, key: "micropost.read").count

它不起作用。

完成此操作的正确语法是什么?提前谢谢!

Ruby 2.3.1,rails 5.0.0.1

1 个答案:

答案 0 :(得分:0)

尝试使用trackable_id查询相同内容。我正在使用pluck(:id),以便我的查询变得容易,因为它给了我一系列id。

@num = PublicActivity::Activity.where(owner_id: current_user.id, key: "micropost.read", trackable_id: Micropost.pluck(:id)).distinct.count