act_as_taggable_on の実装は非常にうまく機能しましたが、タグのエイリアスも宣言する必要があります。
そう主張するプラグインact_as_taggable_with_aliasesを見つけましたが、最後のコミットは 2009 年で、gem リポジトリにはありません。そのため、プロジェクトは今では死んでいると思います。
これを達成する方法はありますか?
act_as_taggable_on の実装は非常にうまく機能しましたが、タグのエイリアスも宣言する必要があります。
そう主張するプラグインact_as_taggable_with_aliasesを見つけましたが、最後のコミットは 2009 年で、gem リポジトリにはありません。そのため、プロジェクトは今では死んでいると思います。
これを達成する方法はありますか?
たぶん、これをサポートする独自のモデルを作成できます(および必要なものは何でも)...
次のようなことを行うことでそれを達成できると思います:
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
このようにして、任意の動作とデータをタグに追加できます。
それがあなたを助けることを願っています!
のコードを見ることができますacts_as_taggable_with_aliases
。すべてが中にあります。常に互換性があるacts_as_taggable
かどうかを確認し、維持できるかどうかを確認できます。