2011-10-05 85 views
1

我正在上传图像,并且在创建新记录时会触发观察者。在观察者中,我正在通过API将图像推送到其他服务。 问题是,当它在本地或在rspec测试时,似乎该记录保存在数据库之前图像保存在磁盘上,我收到文件未找到错误。如何使它保持正确的秩序?回形针,在保存在磁盘上的文件之前保存记录

回答

0

我不知道你的观察者和你的代码的内部。可能的解决方案是将观察者更改为在after_create事件中触发。

+0

但是此刻创建之后 – Artur79

2

观察者在模型中定义的回调之前被触发。因此,在处理附件的回形针的after_save方法运行之前,将调用观察者的after_create方法。

考虑使用after_commitar_after_transaction代替after_save等,当与外部API进行通信,这是你想要什么呢,因为如果事务回滚,否则API调用不能撤消。

+0

有这个问题; after_commit为我工作。 –

+0

具有相同的问题,但根据:https://github.com/rails/rails-observers >这意味着观察者中的回调将始终在模型本身定义的回调之后调用。 –