2

私の質問に対する答えがあります-acts-as-taggable-onを使用してタグのないエントリを見つける方法は?

残念ながら非常に非効率的です。ループ中にデータベースに1回ヒットします

10,000 件のレコードがあり、それらすべてをループして、コードが 10,000 件すべてに対して 1 つのクエリにヒットした場合、それは受け入れられません。

より効率的なソリューションを探しています。

ありがとう。

4

2 に答える 2

3

私はこの解決策を提案します(モデル候補の例):

Candidate.all - Candidate.joins("JOIN taggings on taggings.taggable_id = candidates.id").where("taggings.taggable_type = 'Candidate'")

テーブルにオブジェクトがいくつあるかに関係なく、このヒットデータベースは2回だけです。

于 2011-04-28T12:33:02.870 に答える
3

スコープとしてのこれに対する私の解決策は次のとおりです。

scope :no_tags, joins('LEFT JOIN taggings ON taggings.taggable_id = assets.id AND taggings.taggable_type = "Asset"').where('taggings.id IS NULL')
于 2011-06-15T10:40:53.457 に答える