为什么在将文件分配给附件时,paperclip执行转换,而不是在调用save时执行所有繁重的工作。
这看起来很糟糕:
ar_obj.attachment = File.open('...')
#copy file to /tmp
#styles.length.times do { identify & convert }
ar_obj.save
# copy original & thumbnails in place.
我不确定这根本没什么意义。为什么尝试转换 未经验证的附件?
例如:尝试附加10G图像 - 需要FOREVER才能完成 即使你有大小验证(比如说<5MB),因为10G 图像仍然会重新处理为您拥有的每种样式。事实并非如此 直到调用save才会添加错误。
这一定有充分的理由,请赐教。
答案 0 :(得分:1)
最初是因为无效的图像(如果您在期待jpg时尝试上传mp3)是验证错误,需要在保存之前发现,以便您可以向用户显示正确的错误。
即使对Rails中的大小进行验证,也意味着只要上传发生,连接就会保持打开状态。如果你真的想在这种情况下快速失败,你应该防止Apache / nginx级别的大量上传。
答案 1 :(得分:0)
我不知道为什么这样做的确切原因,但我发现它也很奇怪。我通常使用DelayedPaperclip gem来解决它,它会延迟处理对DelayedJob工作者的附件。