7

act_as_taggable_on の実装は非常にうまく機能しましたが、タグのエイリアスも宣言する必要があります。

そう主張するプラグインact_as_taggable_with_aliasesを見つけましたが、最後のコミットは 2009 年で、gem リポジトリにはありません。そのため、プロジェクトは今では死んでいると思います。

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

4

2 に答える 2

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

このようにして、任意の動作とデータをタグに追加できます。

それがあなたを助けることを願っています!

于 2012-05-15T12:55:06.790 に答える
0

のコードを見ることができますacts_as_taggable_with_aliases。すべてが中にあります。常に互換性があるacts_as_taggableかどうかを確認し、維持できるかどうかを確認できます。

于 2012-04-03T08:02:39.493 に答える