改变了吗?方法不适用于模型内部

时间:2013-12-19 03:18:37

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我有以下型号:

class TicketStatus < ActiveRecord::Base
  after_update :set_previous_staff
  attr_accessible :status_id, :ticket_id , :staff_id, :advisor_id, :previous_advisor_id, :previous_staff_id
  belongs_to :status
  belongs_to :ticket
  belongs_to :staff, class_name: 'Staff', foreign_key: 'staff_id'
  belongs_to :previous_staff , class_name: 'Staff', foreign_key: 'previous_staff_id'
  belongs_to :advisor, class_name: 'Advisor', foreign_key: 'advisor_id'

  def set_previous_staff
    self.previous_staff_id = self.staff_id_was if self.staff_id_changed?
  end

end

set_previous_staff方法无法使用回调,但我在控制台中尝试changed?它应该可以工作,这里缺少什么?我正在使用rails 3.2.14

我的期望:我有一个已分配的员工到一张票,我需要当分配的员工改变时,他的ID应该被添加到previous_staff_id,所以这将让我知道谁是当前的员工,谁是谁在他之前。

1 个答案:

答案 0 :(得分:0)

您在更新后更改了实例,但之后您实际上从未将更改保存到数据库中。要进行更新,订单会:

  1. before_validation
  2. before_validation_on_update
  3. after_validation
  4. after_validation_on_update
  5. before_save
  6. before_update
  7. DATABASE INSERT
  8. after_update
  9. after_save的
  10. 尝试将after_update更改为before_update,以便在提交更改之前运行您的方法。