0
我创建了两个名为Asset and Tag的域类。资产可以有许多标签如何从域名类中删除自由形式的“标签”?
// Asset.groovy
class Asset {
static hasMany = [tags: Tag]
}
// Tag.groovy
class Tag {
static belongsTo = Asset
String word
}
标签被输入到视图中的文本框中,每个标签都用逗号分隔。
当资产的形式提交后,AssetController将使用Tag.findOrSaveWhere
来创建一个新的标签或Asset.addToTag
def tags_list = params?.tags?.split(",")
tags_list.each {
def tag = Tag.findOrSaveWhere(word: it.trim())
assetInstance.addToTags(tag)
}
所有工作得非常好,但我想主要从资产,如果除去标签用户更新并删除标签。
如何在更新时删除标签?
编辑通过采用旧的方法删除所有标签然后尝试保存Asset实例,我已经进一步了解了这一点。
assetInstance.tags.clear()
def tags_list = params?.tags?.split(",")
tags_list.each {
def tag = Tag.findOrSaveWhere(word: it.trim())
assetInstance.addToTags(tag)
}
但是,如果标签为空,则会引发异常。换句话说,如果我删除所有标签,则保存失败。