【问题标题】:How to declare tags aliases with acts_as_taggable_on in Rails?如何在 Rails 中使用acts_as_taggable_on 声明标签别名?
【发布时间】:2011-10-25 08:44:19
【问题描述】:

acts_as_taggable_on 实现效果很好,但我还需要声明标签别名。

我找到了一个声称这样做的插件,acts_as_taggable_with_aliases,但最后一次提交是在 2009 年,并且不在 gem 存储库中,所以我认为该项目现在已经死了。

有什么方法可以实现吗?

【问题讨论】:

  • 看源码看_with_aliases是怎么做到的?

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


【解决方案1】:

也许您可以创建自己的模型来支持这一点(以及您想要的任何其他内容)...

我认为您可以通过以下方式实现:

class Tag < ActiveRecord::Base
end

class Tagging < ActiveRecord::Base
    validates_presence_of :tag_id
    belongs_to :tag
    belongs_to :taggable, :polymorphic => true
end

class ModelIWantToBeTagged < ActiveRecord::Base
  include ModelTagging
  has_many :taggings, :as => :taggable
end

module ModelTagging
    def add_tag(tag_name)           
        tag = Tag.find_or_create_by_tag(tag_name)
        tagging = Tagging.new
        tagging.taggable_id = self.id
        tagging.taggable_type = get_class_name
        tagging.tag_id = tag.id
        tagging.save!
    end

    def remove_tag(tag_name)
        tag = Tag.find_by_tag(tag_name)         
        Tagging.where(:tag_id => tag).delete_all        
    end

    private
    def get_class_name
        self.class.name
    end
end

这样您就可以将任何行为和数据添加到您的标签中。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    你可以看一下acts_as_taggable_with_aliases的代码。一切都在里面。您可以查看它是否始终与acts_as_taggable 兼容并检查是否可以尝试维护它。

    【讨论】:

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