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

时间:2016-01-01 14:25:09

标签: ruby-on-rails ruby-on-rails-4 tags acts-as-taggable-on

对于我的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"),但我找不到与所有者删除标记的方法。

1 个答案:

答案 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

我发现这被埋没在另一个答案中,但我现在无法找到它来归功于作者。

编辑:这是https://stackoverflow.com/a/33797298/4584963