将文件传递到后端的回形针

我正在使用paperclip将多个文件附加到Entry对象

Class Asset < ActiveRecord::Base belongs_to :entry has_attached_file :asset, ... 

当用户通过嵌套表单上传文件时,可以很好地工作。 但是,我有某些情况,不是通过输入表格而是通过闪存录音机上传文件。 音频被记录并异步上传到我的/ tmp文件夹。 所以我最终得到了我的服务器上的一些文件,这些文件还没有通过回形针上传。

在这些情况下,我想把文件传递给回形针进行处理,好像它是由用户通过输入表单上传的。 即我需要在控制器内以编程方式使用回形针。

你会如何实现这一目标? 非常感谢!

通常,上传的文件作为params散列中的File对象传递给控制器​​,然后构造函数通过attributes=将其has_attached_file Paperclip的has_attached_file创建的setter方法 – 在您的模型中, Asset#asset= (可能想稍微澄清一下这些名字)。

不,这不是你问题的答案,但它引导我们回答。 知道您可能意识到您可以随时以File作为参数调用该setter。 例如:

 class SomeController < ActionController::Base def some_action @some_asset = Asset.find 123 # (for example) file_path = '/tmp/path/to/your/file' file = File.open(file_path, 'r') @some_asset.asset = file @some_asset.save end end 

希望有用!