我想根据当前日期更改域模型变量的值

时间:2014-08-06 19:37:20

标签: grails groovy gsp

我创建了一个名为报告的域模型对象,并为其提供了几个变量,例如:

Date dateCreated
Boolean expired

然后我创建对象的实例,如下所示:

def report = new Report(id: 1, dateCreated: currentDate, expired: false)

保存这些实例可以正常工作,但我想将expired变量更改为' true' dateCreated变量24小时后自动生成。这对我正在使用的report.gsp网站非常重要,但是如果" if"如果我可以帮助它,循环.gsp内部。我需要知道我应该在哪里触发此事件,以便过期变量的新值仍然存在。

1 个答案:

答案 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)
        // ...
    }
}

我希望有所帮助。