跟踪属性的变化



我确实有跟踪属性变化的问题这是我的模型

class Ticket < ActiveRecord::Base
  include Generator  
  around_update :create_history
  def create_history    
    @event_status = "Status to #{self.status}.n" if status_changed?    
    @event_owner = "Now it is provided by #{self.stuff.name}n" if   stuff_id_changed?
    yield    
    histories.create(event: "Changed! #{@event_status} #{@event_owner} On #{self.updated_at.utc}") if @event_status || @event_owner
  end
end

action update is trivial

def update
   flash[:notice] = "Your ticket successfully updated."    
   @ticket.update!(ticket_params.merge(status: 0))    
end

但是这不起作用(创建历史的规范失败)。我为此奋斗了好几个小时。如果有人指出我的错误,我将非常感激

很难说你的代码到底出了什么问题。

一个是ticket_params.merge(status: 0)。因为你的status总是0,从来没有改变过。

只要我看不到ticket_params,我就不能确切地说stuff_id的变化有什么问题。

我在测试项目中创建了相同的around_update回调,它工作得很好。

我想要注意的主要事情是你应该使用paper_trail gem来处理你的模型历史。这颗宝石太棒了,你一定会喜欢的。

最新更新