是否可以在将返回有效对象的grails中编写自己的验证器?
类似的东西:
static constraints = {
name(validator: {val, obj ->
if (Drink.findByName(val)) return [Drink.findByName(val)]
})
}
换句话说 - 如果饮料已存在于数据库中,只需在有人做
时返回现有饮料新饮料(“可口可乐”)
和可乐已经在数据库中
答案 0 :(得分:2)
您无法使用自定义验证程序执行此操作。这并不是它的意义所在。来自Grails Reference:
关闭可以返回:
null
或true
表示该值有效false
表示无效值并使用默认消息代码grails-app/i18n/message.properties
以查看默认错误消息代码如何使用参数。另一种方法可能是创建一个服务方法,1)查找域并返回它(如果存在),2)否则,保存域并返回它。
可能有更优雅的选择。无论如何,Grails的约束机制不是(也不应该)能够做到这一点。
答案 1 :(得分:0)
不确定您是否可以在验证器内执行此操作,但是:
饮料d = Drink.findOrSaveWhere(姓名:' Smooth Drink&#39 ;, alcoholLevel:' 4.5')