Ruby on Rails:如何删除未使用的带有 acts-as-taggable-on 的标签?
Ruby on Rails: How to delete unused tags with acts-as-taggable-on?
我已按照 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
也没用。也许它需要包含一个模块?
任何帮助将不胜感激。
这是我的错误。我认为它会删除 taggings_count 为 0 的所有现有标签。它会在从关系中删除时删除它们。
我有一个佣金任务。
# 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
需要的时候就用
或
# 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
如果你需要双管齐下。也就是说,您像我一样在玩,已经从标签中删除了一些,从标签中删除了一些,需要清理双方。
我已按照 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
也没用。也许它需要包含一个模块? 任何帮助将不胜感激。
这是我的错误。我认为它会删除 taggings_count 为 0 的所有现有标签。它会在从关系中删除时删除它们。
我有一个佣金任务。
# 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
需要的时候就用
或
# 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
如果你需要双管齐下。也就是说,您像我一样在玩,已经从标签中删除了一些,从标签中删除了一些,需要清理双方。