Feed has_many Products,before_save都会让它们挂起

时间:2011-11-20 14:44:04

标签: ruby-on-rails ruby

我有一个Feed模型,可以下载文件,然后从Product模型中创建产品。

我有一个启动Feed下载过程的before_save(当提交新的Feed表单时),并创建新产品。然后我在Product模型上有一个下载远程照片的before_save,以及计算其他一些东西。

但是,而不是:

  • 我点击提交
  • Feed开始下载
  • 创建产品,下载图像,运行计算
  • 闪烁“Feed已成功下载”

它只是挂起,没有什么事情发生。 Feed无法下载,产品不会进入数据库。

在保存之前是否有一种已知的“菊花链”方式?

任何帮助表示赞赏:)

谢谢,

杰夫

1 个答案:

答案 0 :(得分:1)

before_save可能是错误的地方。听起来你需要在before_create中做到这一点。

顺便说一句: 我认为架构是错误的。您的模型基于远程数据等我会异步创建它。这意味着:当您点击“创建”并且http-connect挂断时,就会出现故障。

更好的是:只创建对象。制作一个cronjob(或任何其他工作),它接受新元素并处理它们(远程下载等)。所以远程下载是在后台(我认为在一个良好的架构中,这是他们的正确位置)。

我对进口做同样的事情。只需创建导入程序(并上传文件)。但真正的导入(或处理文件)需要在后台作业中异步