假设我们有一个处理创建、阅读、更新和删除文章的 Web 应用程序,并且每篇文章都应该有图片库。我必须在文章和画廊之间建立一对一的关系,在画廊和媒体之间建立一对多的关系。
HTML5 提供了很多功能,例如多重上传,所以我想为此使用这个出色的http://blueimp.github.io/jQuery-File-Upload/插件。问题是如何像其他表单的数据一样处理“内存中”的文件上传?
例如,当我们显示创建新文章的页面时,我们应该能够填写文章的数据字段并选择要上传的图像,接下来当我们单击保存按钮时,图像应该开始上传,然后表单应该提交。当验证失败时,图像仍应显示在前端,但应保存在服务器端 nothink 上。
解决方案之一是在显示整个表单之前创建类似于“创建实体会话临时 ID”的想法,并且该 ID 可用于创建临时目录以保存上传,因此在成功保存表单后,这些图像可以移动到适当的目录,但是如何制作“创建实体会话临时ID”?
我认为的另一个解决方案是“使用编辑 id”方法,因为我们可以使用以前保存的画廊 id 处理上传,但有时我无法用画廊保存新的空白文章,因为某些字段不应该为空在分贝。
对于 Rails,我在自述文件中看到https://github.com/thoughtbot/paperclip gem 说:
Paperclip 旨在作为 Active Record 的简单文件附件库。它背后的目的是使设置尽可能简单,并尽可能像对待其他属性一样对待文件。这意味着它们不会保存到磁盘上的最终位置,如果设置为 nil,它们也不会被删除,直到调用 ActiveRecord::Base#save。
我的问题是它是如何工作的?