Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails-什么是阶段性的?函数do_Ruby On Rails 4_File Upload_Paperclip - Fatal编程技术网

Ruby on rails 4 Rails-什么是阶段性的?函数do

Ruby on rails 4 Rails-什么是阶段性的?函数do,ruby-on-rails-4,file-upload,paperclip,Ruby On Rails 4,File Upload,Paperclip,我试着浏览文档,以找到源代码或该函数的确切功能描述。我目前正在使用回形针将文件上载到我的rails应用程序,如果表单验证失败,我将尝试保留上载的文件 在other的代码示例中,我看到他们在引用文件时使用此函数。 我假设这是为了检查文件是否正在等待上传到应用程序,但我不喜欢使用我不完全理解的函数 感谢您的回复 编辑*使用.staged的代码 Class Shop < ActiveRecord::Base attr_accessor :logo_cache has_attac

我试着浏览文档,以找到源代码或该函数的确切功能描述。我目前正在使用回形针将文件上载到我的rails应用程序,如果表单验证失败,我将尝试保留上载的文件

在other的代码示例中,我看到他们在引用文件时使用此函数。 我假设这是为了检查文件是否正在等待上传到应用程序,但我不喜欢使用我不完全理解的函数

感谢您的回复

编辑*使用.staged的代码

Class Shop < ActiveRecord::Base    
  attr_accessor :logo_cache

  has_attached_file :logo

  def cache_images
    if logo.staged? # This is where I'm not exactly sure what happens
      if invalid?
        FileUtils.cp(logo.queued_for_write[:original].path, logo.path(:original))
        @logo_cache = encrypt(logo.path(:original))
      end
    else
      if @logo_cache.present?
        File.open(decrypt(@logo_cache)) {|f| assign_attributes(logo: f)}
      end
    end
  end
Class-Shop
方法是。它表示@queued_for_write的属性(如果它不是空的)。此属性包含一个临时文件队列,这些文件尚未写入它们应该结束的目标

代码的基本功能是,检查上传是否尚未写入最终目的地,如果是这种情况,请将其复制到最终目的地(回形针在保存时也会这样做)。然后原始文件的路径被加密(通过任何方法…)并保存在@logo\u缓存中

如果图像未暂存(即某些已保存或甚至未上载的内容),它将解密@logo_缓存中的文件名,并为原始图像指定属性(同样,这也是纸夹自动执行的操作)


此外,如果没有适当的上下文,我也不太理解这种方法。我不认为复制功能是特别优雅的,这是(应该)被封装在剪纸本身中的。为什么该方法会根据文件的当前状态进行加密和解密,并且只有在一种情况下会实际更新“缓存”(不管是什么),只有在一种情况下会更新属性,对此我一无所知。

感谢您的详细回答。我也不太明白为什么这个方法是这样写的。但我在寻找如何在表单验证失败时保持文件上传时遇到了这个问题,这样用户就不用重新附加文件了。