2017-01-02 4 views
1

私はpublic_activity gemを使用しています。public_activityアクションの一意レコードをレールでカウントする方法は?

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

これは、current_userがすべてのマイクロポストで正しく読み取られた回数を示します。しかし、current_userが同じマイクロポストの倍数で読み取った場合、その数もカウントされます。しかし私はそれを望んでいません。 current_userが同じマイクロポストを複数回読み取った場合、1回だけカウントされたいと思います。

私はそれがすべてのエラーメッセージを表示しませんでしたが、それはうまくいきませんでした

@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 

を試してみました。

これを行うための正しい構文は何ですか?前もって感謝します!

ルビー2.3.1、同じ使用trackable_idを照会してみ5.0.0.1

+0

使用していると(:OWNER_ID => ....)、あなたは常にそのユーザのすべてのカウントを取得しますが... – Milind

+0

あなたがnum.include @使用することができます(CURRENT_USER @)をチェックすると? @ num.firstを使って最初のレコードを表示するだけです。助けて欲しいです。 – Milind

+0

はい、私はすでにcurrent_userによってすべてのカウントを取得しています。しかし、私はcurrent_userによって区別カウントを取得したいと思います。 current_userはマイクロポストを複数回読むかもしれませんが、複数の読み込みの代わりに1つの読み込みとして数えたいと思います。ありがとう! – Denny

答えて

0

レール。私はpluck(:id)を使って私のクエリが簡単になるようにしています。

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

どこから来たのか分かります。残念ながら私の場合はうまくいきませんでした。エラーメッセージもありません。 – Denny

関連する問題