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