我一直在寻找这个问题的解决方案。我试过去谷歌,找不到任何东西。
问题:
我有这个工人
class MailWorker
def perform(user_id)
user = User.find(user_id)
...
end
end
有时候一直在运行。然后,需求更改,我们必须传递reservation_id而不是user_id。
所以工人更新为:
class MailWorker
def perform(reservation_id)
reservation = Reservation.find(reservation_id)
....
end
end
问题是,如果我们推送此代码,一些工作人员已经在Q.那么,这些工作人员将尝试找到用户,但新代码正在使用Transaction。
最佳方法是什么?我们是否必须创建新的工作人员而不是使用现有工人并在我们安全后删除旧工人?或者有办法解决这个问题?
由于
答案 0 :(得分:4)
我个人会为此创建一个新工人。
这样可以更轻松地处理所有作业。 (并且向后兼容)