2

我的问题有一个答案 -如何使用acts-as-taggable-on查找没有标签的条目?

但不幸的是效率很低。它在循环期间对数据库造成了一次打击

我有 10,000 条记录,如果我要遍历所有记录并且代码对所有 10,000 条记录进行一次查询,那将是不可接受的。

寻找更有效的解决方案。

谢谢。

4

2 回答 2

3

我建议这个解决方案(模型候选人的例子):

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

无论您的表中有多少对象,这只会命中数据库两次。

于 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 回答