Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:如何删除未使用的标记,并将其作为可标记的对象?_Ruby On Rails_Ruby_Ruby On Rails 4_Acts As Taggable On - Fatal编程技术网

Ruby on rails RubyonRails:如何删除未使用的标记,并将其作为可标记的对象?

Ruby on rails RubyonRails:如何删除未使用的标记,并将其作为可标记的对象?,ruby-on-rails,ruby,ruby-on-rails-4,acts-as-taggable-on,Ruby On Rails,Ruby,Ruby On Rails 4,Acts As Taggable On,我已经按照config/initializers/acts_as_taggable_on.rb中的说明进行了操作 ActsAsTaggableOn.remove_unused_tags = true 然而,它没有起作用。我还尝试了以下类似于其他宝石的方法: ActsAsTaggableOn.setup do |config| config.remove_unused_tags = true end 它也不起作用。也许它需要包含一个模块? 任何帮助都将不胜感激。这是我的错误。我认为它会删除

我已经按照config/initializers/acts_as_taggable_on.rb中的说明进行了操作

ActsAsTaggableOn.remove_unused_tags = true
然而,它没有起作用。我还尝试了以下类似于其他宝石的方法:

ActsAsTaggableOn.setup do |config|
  config.remove_unused_tags = true
end
它也不起作用。也许它需要包含一个模块?
任何帮助都将不胜感激。

这是我的错误。我认为它会删除所有标记计数为0的现有标记。它会在从关系中删除它们。

我有一个rake任务

# 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
我需要的时候就用

如果你需要双管齐下。Ie你像我一样到处玩,从标签上删除了一些,从标签上删除了一些,需要清洗两面

# 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