使用回形针上传代码文件

Upload code files with paperclip

为了能够上传代码文件,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 不起作用?

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

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

可以找到许多这样的文件结尾here

我设法通过在 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