Redmine的模型Project有一个方法
def close
self_and_descendants.status(STATUS_ACTIVE).update_all :status => STATUS_CLOSED
end
在此方法中,使用update_all
进行更新意味着当项目关闭时,不会调用回调after_save
。
如何在项目结束时(通过模型)捕获?
答案 0 :(得分:0)
Rails 5允许使用回调和验证更新记录:
self_and_descendants.status(STATUS_ACTIVE).update(status: STATUS_CLOSED)
对于Rails 4及以下版本,您可以通过批量更新记录来触发回调:
self_and_descendants.status(STATUS_ACTIVE).find_each { |record| record.update_attributes(status: STATUS_CLOSED) }
答案 1 :(得分:0)
如果您不想更改原始方法,可以添加一个插件,为您修补关闭功能(使用Rustik上面提出的代码:http://sqlfiddle.com/#!18/b9980/3/0)。