我创建了一个名为Report的域模型对象,并给了它几个变量,如:
Date dateCreated
Boolean expired
然后像这样创建对象的实例:
def report = new Report(id: 1, dateCreated: currentDate, expired: false)
保存这些实例工作得很好,但我想让expired
变量在dateCreated
变量24小时后自动更改为"true"。这对于我正在使用的report.gsp
网站来说真的很重要,但如果我能帮助它,在.gsp中放入"if"循环似乎是一种不好的做法。我需要知道应该在哪里触发此事件,以便过期变量的新值能够持续存在。
如果你想让这个值在数据库中自动更新,而不需要在你的Grails应用程序中触发任何特殊的东西,那么你需要在数据库中编写一些函数来实现这一点。如果在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)
// ...
}
}