在编辑模型时,Rails会保存原始副本

时间:2015-06-17 14:57:01

标签: ruby-on-rails

我有一个简单的脚手架:

rails g scaffold Order name:string notes:text

我希望用户能够编辑他们的订单,但保留过去版本的副本以供参考。我考虑添加一个单独的“修订版”模型来代替文本,但我还希望表单能够保留最新信息以便于编辑。

抱歉不发布更多代码,我不确定会有什么帮助

1 个答案:

答案 0 :(得分:0)

我认为更好的想法是创建两个模型: Order and OrderHistory

订单与OrderHistory有很多关系。

在OrderController的更新操作中,您必须使用以前的数据创建一个OrderHistory,并使用指向Order的外键。您还可以使用create_date之类的默认rails字段来获取最新修订版本并保留其良好的历史记录。

使用模型订单是不好的做法,就像我说的那样。

class OrderController < ApplicationController::Base
  before_action :set_order #implement this function


  def update 
    orderHistory = OrderHistory.create(@order.params) #this code can fail I don't remmember how exactly do that now
    respond_to do |format|  
      if @order.update(order_params)
         orderHistory.save
      else 
      #response in fail case
      end
    end 


  end
end