对于我的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")
,但我找不到与所有者删除标记的方法。
答案 0 :(得分:0)
我最终使用了这些方法:
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
我发现这被埋没在另一个答案中,但我现在无法找到它来归功于作者。