ruby-on-rails - 使用Rails Paperclip gem,如果模型无效,如何临时保存上传的文件

标签 ruby-on-rails

我正在使用回形针 gem 将文件附加到模型。使用 Paperclip 上传文件时,仅在保存模型时才会保存文件。因此,如果模型无效,则不会保存上传的文件。有没有办法暂时保存上传的文件,这样如果模型无效,用户就不必上传相同的文件?

最佳答案

定义一个 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 

关于ruby-on-rails - 使用Rails Paperclip gem,如果模型无效,如何临时保存上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967835/

相关文章:

ruby-on-rails - Rubocop Metrics/CyclomaticComplexity 以防万一

ruby-on-rails - Rails 3.2 bootstrap-sass 未安装

ruby-on-rails - 将电子邮件发送到多个电子邮件地址 rails 3

html - Internet Explorer 8 未完成页面下载!

ruby-on-rails - 在 Ubuntu 上安装 Heroku Toolbelt 时出错

jquery - Heroku SSL Rails 应用程序中的 MSIE $.ajax 延迟

ruby-on-rails - Rspec - Rails - 如何跟随重定向

ruby-on-rails - ActiveRecord 使用连接来提高性能,但将所有关联的记录加载到内存中,就像包含一样

javascript - 如何使用jquery或rails获取特定年份中所有星期的列表

php - Amazon S3 强制访问控制