2011-08-11 4 views
7

acts_as_taggable_on実装はかなりうまく機能しましたが、タグの別名も宣言する必要があります。Railsでacts_as_taggable_onを使ってタグの別名を宣言する方法は?

acts_as_taggable_with_aliasesというプラグインが見つかりましたが、最後のコミットは2009年であり、宝石リポジトリにはありませんので、今はプロジェクトが死んでいると思います。

これを達成する方法はありますか?

+1

あなたは '_with_aliases'がどのようにしたのかを知るためにソースを見ましたか? –

答えて

0

あなたはacts_as_taggable_with_aliasesのコードを見てみることができます。すべてが内側にあります。あなたはいつもそれがacts_as_taggableと互換性があるかどうかを確認し、それを維持しようとするかどうか確認することができます。

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 

することができます。この道をあなたのタグへの行動やデータ

希望すると助かります!

関連する問題