我已按照https://github.com/mbleigh/acts-as-taggable-on/wiki上的说明进行操作,并在config / initializers / acts_as_taggable_on.rb中按照
进行操作ActsAsTaggableOn.remove_unused_tags = true
然而它并没有奏效。我也尝试过类似于其他宝石的以下内容:
ActsAsTaggableOn.setup do |config|
config.remove_unused_tags = true
end
它也没有用。也许它需要一个模块包括在内? 任何帮助将不胜感激。
答案 0 :(得分:4)
我有一个佣金任务。
# lib/tasks/tag_cleaner.rake
# run using 'RAILS_ENV=development rake tag_cleaner:delete_unused'
namespace :tag_cleaner do
desc "delete unused tags"
task :delete_unused => :environment do
ActsAsTaggableOn::Tag.joins(
"LEFT JOIN taggings on taggings.tag_id = tags.id").where("taggings.id is null").delete_all
end
end
我在需要时使用它。
OR
# lib/tasks/tag_cleaner.rake
# run using 'RAILS_ENV=development rake tag_cleaner:delete_unused'
namespace :tag_cleaner do
desc "delete unused tags"
task :delete_unused => :environment do
ActsAsTaggableOn::Tag.joins(
"LEFT JOIN taggings on taggings.tag_id = tags.id").where("taggings.id is null").delete_all
ActsAsTaggableOn::Tagging.joins(
"LEFT JOIN tags on tags.id = taggings.tag_id").where("tags.id is null").delete_all
end
end
如果你需要双向进行。即你像我一样玩耍,并从标签中删除一些标签,并从标签中删除一些,并且需要清洁双方。
答案 1 :(得分:1)
这是我的错。我认为它会删除taggings_count为0的所有现有标签。它会在从关系中删除后删除它们。