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