计划:二级分支机构的管理员负责增改删,一级机构的管理员负责审核通过。增加和删除都好设计,增加个字段,标记一个状态就可以了。但问题出在了修改记录上—— 二级系统管理员修改了一条记录,需要一级管理员审核后才能生效。再审核之前,原数据仍作为有效数据。 呵呵,这个原数据怎么保存?需要复制一条记录吗?如果在审核通过前二级管理员把这条记录又编辑一次呢? 这问题对我来说有些复杂~ 求指点:
计划:二级分支机构的管理员负责增改删,一级机构的管理员负责审核通过。增加和删除都好设计,增加个字段,标记一个状态就可以了。但问题出在了修改记录上—— 二级系统管理员修改了一条记录,需要一级管理员审核后才能生效。再审核之前,原数据仍作为有效数据。 呵呵,这个原数据怎么保存?需要复制一条记录吗?如果在审核通过前二级管理员把这条记录又编辑一次呢? 这问题对我来说有些复杂~
如果用 workflow 来操作的话能否解决问题
def update @old_device = Device.find(params[:id]) if @old_device.copy_id.blank? then @new_device = @old_device.dup @new_device.copy_id = @old_device.id respond_to do |format| if @new_device.update(device_params) format.html { redirect_to events_path(:branch => @new_device.branch), notice: 'Device was successfully updated.' } format.json { render :show, status: :ok, location: @device } else format.html { render :edit } format.json { render json: @device.errors, status: :unprocessable_entity } end end @new_device.save #这个save有点多余 @old_device.status += 10 @old_device.save else respond_to do |format| if @old_device.update(device_params) format.html { redirect_to events_path(:branch => @old_device.branch), notice: 'Device was successfully updated.' } format.json { render :show, status: :ok, location: @device } else format.html { render :edit } format.json { render json: @device.errors, status: :unprocessable_entity } end end end end
paper_trail
建议对于增改删操作额外建立模型来记录,审核通过时,读取相关记录,执行真实操作
paper_trail 这个 gem 是在 数据保存以后,记录数据的变更历史。对于审核,我们可能希望在审核通过之前,仍然使用老的属性,在审核通过之后才使用新的属性。