Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 如何将回形针与服务器上已有的文件一起使用?_Ruby On Rails_Ruby_File Upload_Paperclip - Fatal编程技术网

Ruby on rails 如何将回形针与服务器上已有的文件一起使用?

Ruby on rails 如何将回形针与服务器上已有的文件一起使用?,ruby-on-rails,ruby,file-upload,paperclip,Ruby On Rails,Ruby,File Upload,Paperclip,为了记录在案,我正在处理遗留代码,并试图在不破坏一切的情况下插入新功能。现在我的服务器上有一堆文件: myapp/public/temp/myfile.doc 问题是,我想在控制器操作中从这些文件创建一个Docfile对象 以下是精简后的Docfile类: class DocFile < ActiveRecord::Base has_attached_file :docs, :path => "#{Constants::DOCFILES_PATH}:basename.

为了记录在案,我正在处理遗留代码,并试图在不破坏一切的情况下插入新功能。现在我的服务器上有一堆文件:

 myapp/public/temp/myfile.doc
问题是,我想在控制器操作中从这些文件创建一个Docfile对象

以下是精简后的Docfile类:

class DocFile < ActiveRecord::Base
  has_attached_file :docs,
    :path => "#{Constants::DOCFILES_PATH}:basename.:extension",
    :url => "http://#{Constants::SITE_URL}/docs/:basename.:extension"
end
但它不起作用

任何提示都将不胜感激

编辑:

我这样做:

temp_file_url = Constants::TEMPORARY_UPLOAD_PATH + "/" + params[:temp_file_upload][:doc]
temp_file = File.new(temp_file_url,  "w+")
@docfile = DocFile.new :docs => File.open(temp_file_url)

它仍然不起作用

我不是Rails的权威,但是

@docfile = DocFile.new :docs => temp_file
难道不是吗

@docfile = DocFile.new :docs => temp_file_url  

我认为您需要通过迁移来解决这个问题,对于现有文件,您需要填充曲别针添加到模型中的列(
xxx\u文件名
xxx\u内容类型,xxx\u文件大小
)。您没有提到是否将
Constants::DOCFILES\u PATH
映射到您的旧文档目录,但即使如此,我认为您必须将这些文件符号链接到曲别针期望的目录结构。

您应该传递
曲别针
一个
文件
对象:

temp_file_path = 'correct_rails_root/myapp/public/temp/myfile.doc'
@docfile = DocFile.new :docs => File.open(temp_file_path)
我必须这样做:

temp_file_name = #the filename
temp_file_path = Constants::TEMPORARY_UPLOAD_PATH + "/" + temp_file_name
temp_file = File.new(temp_file_path,  "r")

@docfile = DocFile.new :docs => temp_file

显然,如果我不以“读取”方式打开文件,它将无法工作。这对我来说没什么意义,但它现在起作用了

这是真的,dunnow如果它会影响^^我现在正在测试谢谢你的回答。所有这些都完成了。回形针与“正常”形式一起使用时工作正常。这种情况是不同的,所以这只是一些黑客左右。。。有什么想法吗?
temp_file_name = #the filename
temp_file_path = Constants::TEMPORARY_UPLOAD_PATH + "/" + temp_file_name
temp_file = File.new(temp_file_path,  "r")

@docfile = DocFile.new :docs => temp_file