【问题标题】:Ruby on Rails: How to delete unused tags with acts-as-taggable-on?Ruby on Rails:如何使用acts-as-taggable-on 删除未使用的标签?
【发布时间】:2015-07-27 06:54:59
【问题描述】:

我已按照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

它也没有工作。也许它需要包含一个模块? 任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    我有一个 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
    

    我在需要时使用它。

    # 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
    

    如果您需要双向使用。即你像我一样在玩,已经从标签中删除了一些,从标签中删除了一些,需要清理双方。

    【讨论】:

      【解决方案2】:

      这是我的错。我认为它会删除所有 taggings_count 为 0 的现有标签。它会在从关系中删除它们时删除它们。

      【讨论】:

        猜你喜欢
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多