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
我发现这个隐藏在另一个答案中,但我现在找不到它来感谢作者。
编辑:这是
对于我的 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
我发现这个隐藏在另一个答案中,但我现在找不到它来感谢作者。
编辑:这是