Acts-as-taggable-on - 是否有删除具有所有权的标签的方法?

Acts-as-taggable-on - Is there a method to delete a tag with ownership?

对于我的 rails 应用程序,我需要能够通过控制器操作删除当前用户拥有的标签。

根据 documentation,您可以使用 @item.tag_list 查看标签,但这不会显示所有者的标签。为此你应该使用 @item.all_tags_list.

要添加标签,您可以执行 @item.tag_list.add("tag1"),要添加带有所有者的标签,您可以执行 @some_user.tag(@item, :with => "tag1", :on => :tags)

要删除标签,您可以 @item.tag_list.remove("tag1"),但我找不到删除所有者标签的方法。

我最终使用了这些方法:

def stringify(tag_list)
    tag_list.inject('') { |memo, tag| memo += (tag + ',') }[0..-1]
end

def remove_owned_tag 
    @some_item = Item.find(params[:id])
    owned_tag_list = @some_item.all_tag_list - @some_item.tag_list
    owned_tag_list -= [(params[:tag])]
    @tag_owner.tag(@some_item, :with => stringify(owned_tag_list), :on => :tags)
    @some_item.save   
end

我发现这个隐藏在另一个答案中,但我现在找不到它来感谢作者。

编辑:这是