我创建了一个名为报告的域模型对象,并为其提供了几个变量,例如:
Date dateCreated
Boolean expired
然后我创建对象的实例,如下所示:
def report = new Report(id: 1, dateCreated: currentDate, expired: false)
保存这些实例可以正常工作,但我想将expired
变量更改为' true' dateCreated
变量24小时后自动生成。这对我正在使用的report.gsp
网站非常重要,但是如果" if"如果我可以帮助它,循环.gsp内部。我需要知道我应该在哪里触发此事件,以便过期变量的新值仍然存在。
答案 0 :(得分:2)
如果您希望数值在数据库中自动更新而没有任何特殊的触发,那么您需要在数据库中编写某种函数来执行此操作。如果可以在Grails应用程序更新对象时更新过期属性,那么您可以执行以下操作:
class Report {
Date dateCreated
Boolean expired
def beforeUpdate() {
// expired if created more than 7 days ago...
expired = dateCreated < (new Date() - 7)
}
}
当然,如果你想要,你可以做同样的事情......
class SomeController {
def someAction() {
def report = Report.get(params.id)
report.expired = report.dateCreated < (new Date() - 7)
// ...
}
}
我希望有所帮助。