使用acts-as-taggable-on查找没有标签的条目

时间:2011-04-28 10:24:58

标签: ruby-on-rails acts-as-taggable-on

我的问题有答案 - how to find entries with no tags using acts-as-taggable-on?

但遗憾的是效率很低。它会在循环期间对数据库进行一次点击

我有10,000条记录,如果我要循环遍历所有这些记录并且代码针对所有10k命中一个查询,那将是不可接受的。

寻找更有效的解决方案。

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

我作为范围的解决方案是:

scope :no_tags, joins('LEFT JOIN taggings ON taggings.taggable_id = assets.id AND taggings.taggable_type = "Asset"').where('taggings.id IS NULL')