Как объявить псевдонимы тегов с act_as_taggable_on в Rails?

Реализация act_as_taggable_on работала довольно хорошо, но мне также нужно объявить псевдонимы тегов.

Я нашел плагин, который утверждал, что делает это, acts_as_taggable_with_aliases, но последняя фиксация была в 2009 году и не в репозиториях драгоценных камней, поэтому я предполагаю, что проект уже мертв.

Есть ли способ добиться этого?


person Zequez    schedule 11.08.2011    source источник
comment
Вы смотрели в источнике, чтобы увидеть, как _with_aliases это сделал?   -  person Jordan Running    schedule 13.12.2011


Ответы (2)


Может быть, вы можете создать свои собственные модели для поддержки этого (и всего остального, что вы хотите)...

Я думаю, вы можете добиться этого, выполнив что-то вроде:

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

Таким образом, вы можете указать любое поведение и данные для своих тегов.

Надеюсь, это поможет вам!

person Rudy Seidinger    schedule 15.05.2012

Вы можете взглянуть на код acts_as_taggable_with_aliases. Все внутри. Вы можете увидеть, всегда ли он совместим с acts_as_taggable, и проверить, можете ли вы попробовать его поддерживать.

person shingara    schedule 03.04.2012