5
Grails中有没有简单的方法来禁止删除任何Domain Class?而是在每个域中删除标志,每当删除某些内容时都会更新。Grails更新而不是删除
此外,有效的所有列表/显示方法不应该显示的对象,其中删除标志为真。
我知道我能做到这一点通过手动编辑在所有控制器我所有的CRUD方法,而是使用Grails这里的一切可以改变的地方一些标志来完成工作时,似乎有点太辛苦了!
我通常列表方法看起来像以下,几乎在我的项目中的所有列表方法,您可以只属于用户的公司用户访问的事情。
def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
def documentsList = Documents.createCriteria().list(params){
eq("company.id",session.companyId)
maxResults(params.max)
order("dateCreated","desc")
//firstResult(params.offset)
}
[documentsInstanceList: documentsList , documentsInstanceTotal: documentsList.getTotalCount() ]
}
我喜欢这样的解决方案,但我也想一个静态属性添加到我想这种行为域类,并且只覆盖删除和列表具有属性集类为真。这样,您仍然可以拥有真正被删除的域类的实例。 – erturne 2012-01-07 12:06:20
好点。另外,在修改了缺省删除方法的域类上创建一个像hardDelete这样的新方法可能是有意义的。 – 2012-01-07 14:24:05
好主意。此外,而不是像我上面提到的静态属性,只需查找已删除属性的存在。这可以很容易地变成一个Grails插件。称它为软删除。 – erturne 2012-01-07 14:36:28