grails taggable插件 - removeTag失败

时间:2016-03-27 03:34:17

标签: grails grails-plugin

可能在黑暗中拍摄,但希望有人知道:

我使用最新的Grails Taggable插件v1.1.0和Grails 2.5

在我的控制器中我有两个动作:

 def addGroupTag(String tag, Long membershipId) {

    def groupMembership = GroupMembership.findById(membershipId)
    groupMembership.addTag(tag)

}

def removeGroupTag(String tag, Long membershipId) {

    def groupMembership = GroupMembership.findById(membershipId)
    groupMembership.removeTag(tag)

    }
}

我可以将标签和membershipId发送到addGroupTag,并且在调用addTag之后添加标签没有问题。我发送相同的参数后删除GroupTag并没有任何反应。 removeTag肯定被调用,但没有任何反应,没有错误消息,没有从标记或tag_link表中移除,nada。

任何指针都会非常感激

修改

所以我看了一下这个插件,我发现了这个方法,它是这样的:

 for(domainClass in application.domainClasses) {
        if(Taggable.class.isAssignableFrom(domainClass.clazz)) {
            domainClass.clazz.metaClass {

                ---- various others such as addTag ----

                removeTag { String name ->
                    if(delegate.id == null) throw new TagException("You need to save the domain instance before tagging it")

                    if (!Tag.preserveCase) {
                        name = name.toLowerCase()
                    }
                    def criteria = TagLink.createCriteria()
                    def instance = delegate
                    def link = criteria.get {
                        tag {
                            if (!Tag.preserveCase) {
                                eq 'name', name
                            } else {
                                ilike 'name', name
                            }
                        }
                        eq 'tagRef', instance.id
                        eq 'type', GrailsNameUtils.getPropertyName(instance.class)
                        cache true
                    }
                    link?.delete()
                    return delegate
                }

现在,如果我将link?.delete()更改为link?.delete(flush:true),那么它会删除TagLink表中的条目,这是奇怪的但是向前迈出一步,因为就我的groupMembership实例而言,这意味着标签不复存在。但是,每次删除标签时,我都不想刷新会话,那是什么意思?此外,如果没有链接,我会假设实际的标签实例也会被删除,因为据我所知他们只会永远坐在那里..

0 个答案:

没有答案