【发布时间】:2023-03-09 01:13:01
【问题描述】:
我正在使用回形针 gem 将文件附加到模型。使用 Paperclip 上传文件时,仅在保存模型时才会保存文件。因此,如果模型无效,则不会保存上传的文件。有没有办法暂时保存上传的文件,这样如果模型无效用户就不用上传同一个文件了?
【问题讨论】:
标签: ruby-on-rails
我正在使用回形针 gem 将文件附加到模型。使用 Paperclip 上传文件时,仅在保存模型时才会保存文件。因此,如果模型无效,则不会保存上传的文件。有没有办法暂时保存上传的文件,这样如果模型无效用户就不用上传同一个文件了?
【问题讨论】:
标签: ruby-on-rails
定义一个before_save 方法来检查对象是否有效,
如果不将文件保存到磁盘,请给它一个唯一的名称(创建一些哈希)
把你发回的表格放在一个隐藏字段中
删除表单中的上传字段
现在在 before_save 方法的 else 分支中检查是否有 hidden_field previous_upload 或者你命名它
如果有加载图片并赋值给回形针属性,剩下的就可以算出来了
attr_accessor :previous_upload
def before_save
if valid?
if previous_upload
paperclip_file = #Load paperclip_file from /tmp
else
previous_upload = nil
end
else
previous_upload = "Some unique key for each upload like ip and time or such"
# Save paperclip_file with name previous_upload to /tmp
end
end
【讨论】: