特定の種類の記事の数を把握しようとしています。私は非常に非効率的なクエリを持っています:
Article.where(status: 'Finished').select{|x| x.tags & Article::EXPERT_TAGS}.size
より優れたプログラマーになるための探求において、これをより高速なクエリにする方法を考えています。tags
は の文字列の配列でArticle
、Article::EXPERT_TAGS
は別の文字列の配列です。配列の交点を見つけて、結果のレコード数を取得したいと考えています。
EDIT:Mongo配列として定義されていますArticle::EXPERT_TAGS
。article.tags
これらの配列は文字列を保持しており、シリアライズされた文字列だと思います。例: Article.first.tags = ["Guest Writer", "News Article", "Press Release"]
. 残念ながら、これはタグの別のテーブルとして適切に設定されていません。
2番目の編集:私はMongoDBを使用しているので、実際にはActiveRecordではなく、MongoMapperやmongoidのようなMongoWrapperを使用しています。これは私のミスです、ごめんなさい!このエラーのため、この質問の分析が台無しになります。エラーを指摘してくれた PinnyM に感謝します。