背景:私には投稿とユーザーがあり、どちらにも多くのコミュニティがあります。
目的:特定のユーザーに対して、投稿のコレクションを返したいと思います。投稿がユーザーと共通しているコミュニティの数によって並べ替えられています (共通のコミュニティが多い投稿ほど上にあります)。
私の現在の試み(ソート方法を使用)はうまくいきます:
Post.includes(:community_posts).where(community_posts: { community_id: current_user.community_ids }).sort{ |x,y| (y.community_ids & current_user.community_ids).length <=> (x.community_ids & current_user.community_ids).length }
しかし、これを行うためのより良い/より効率的な方法はありますか?