我有以下型号:
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
,所以这将让我知道谁是当前的员工,谁是谁在他之前。
答案 0 :(得分:0)
您在更新后更改了实例,但之后您实际上从未将更改保存到数据库中。要进行更新,订单会:
尝试将after_update
更改为before_update
,以便在提交更改之前运行您的方法。