我有一个rake任务,它可以获取XML文档并将其保存到我的应用程序中的模型中。该任务一直有效,直到我将content_type的验证添加到模型
现在任务给出错误:
Datafile content type is invalid, Datafile is invalid
如何将tmp文件的content_type设置为text / xml以便验证通过?
任务代码如下:
task :fetch_documents => :environment do
Net::FTP.open("www.example.com", "xxxxx", "xxxxx") do |ftp|
ftp.nlst.each do |file_name|
tmp = Tempfile.new(['foo', '.xml' ])
ftp.gettextfile(file_name, tmp.path)
# save it
document = Document.new
document.file_name = File.basename(file_name)
document.datafile = tmp
document.save!
tmp.close
end
end
end
答案 0 :(得分:1)
我能够找到要使用的内容类型:
gem install mime-types
并添加到我的佣金任务中:
require 'mime/types'
然后我闯入了pry repl并使用了
MIME::Types.type_for(tmp.path).first.content_type
这使我能够将正确的mime类型添加到模型验证中:
application/xml
我不确定为什么文件是application / xml,当表单上传的文件是text / xml但事后看来,这是一个非常明显的修复!