使用回形针上传代码文件

时间:2016-03-09 15:01:18

标签: ruby-on-rails r ruby-on-rails-4 paperclip paperclip-validation

validates_attachment_content_type配置应该是什么才能上传代码文件。在我的情况下,我想上传.R文件。

我想做这样的事情:

class RFile < ActiveRecord::Base
  has_attached_file :r, url: "/system/:attachment/:id/:basename.:extension"
  validates_attachment_content_type :r, content_type: 'text/r'
end

我是否必须定义mime类型?我该怎么做?

修改

使用此代码,使用text/plain

class RFile < ActiveRecord::Base
  has_attached_file :r, url: "/system/:attachment/:id/:basename.:extension"
  validates_attachment_content_type :r, content_type: 'text/plain'
end

我收到以下错误:

R has contents that are not what they are reported to be
R is invalid
R content type is invalid

我查看了这个mime类型列表

http://hul.harvard.edu/ois/systems/wax/wax-public-help/mimetypes.htm

但是我找不到.R文件的那个。但是在执行此命令时:

file --mime-type compare_datasets.R 

我得到了这个结果:

compare_datasets.R: text/plain

为什么text/plain不起作用?

2 个答案:

答案 0 :(得分:1)

对于代码文件,您可以使用text/plain MIME类型。

validates_attachment_content_type :r, :content_type => 'text/plain'

可以找到许多此类文件结尾here

答案 1 :(得分:0)

我设法通过在mime类型初始化程序中执行此操作来实现它:

Paperclip.options[:content_type_mappings] = {r: "text/plain"}

这在模型中:

class RFile < ActiveRecord::Base
  has_attached_file :r, url: "/system/:attachment/:id/:basename.:extension"
  validates_attachment_file_name :r, matches: [/r\Z/, /R\Z/]
  do_not_validate_attachment_file_type :r
end