2011-08-11 23 views
7

acts_as_taggable_on uygulaması oldukça iyi çalıştı, ancak etiket takma adlarını da bildirmem gerekiyor.Rails'de takma adlar_as_taggable_on ile takma adlar nasıl eklenir?

acts_as_taggable_with_aliases, ancak son taahhüdün 2009'da yapıldığı iddia edilen bir eklenti buldum ve gem depolarında değil, bu yüzden projenin şimdiye kadar öldüğünü kabul ediyorum.

Bunu başarmanın bir yolu var mı?

+1

Bu _with_aliases'ın nasıl yapıldığını görmek için kaynağa baktınız mı? –

cevap

0

acts_as_taggable_with_aliases koduna bakabilirsiniz. Hepsi içeride. acts_as_taggable ile uyumlu olup olmadığını kontrol edebilir ve bunu sürdürmeyi deneyip deneymediğinizi kontrol edebilirsiniz.

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 

yapabilirsiniz Bu şekilde:

1

Belki ben gibi bir şey yaparak elde edebilirsiniz düşünüyorum ... Bu (istediğiniz başka ve bir şey) desteklemek için

Kendi modeller oluşturabilirsiniz etiketlerinize herhangi bir davranış ve veri.

Umut size yardımcı olur!