我有一个非常基本的Paperclip上传模型,它通过has_many附加到用户模型,并使用Uploadify进行实际上传。 Flash发送内容类型为“application / octet-stream”的所有文件,因此使用validates_attachment_content_type拒绝所有文件。
在我的创建操作中,我能够从原始文件名中获取mime-type,但只有在保存之后才能获得:
def coerce(params) h = Hash.new h[:upload] = Hash.new h[:upload][:attachment].content_type = MIME::Types.type_for(h[:upload][:attachment].original_filename).to_s ... end
和
def create diff_params = coerce(params) @upload = Upload.new(diff_params[:upload]) ... end
白名单文件类型的最佳方式是什么?
我正在考虑使用before_validation方法,但我不确定它是如何工作的。任何想法都会受到欢迎。
答案 0 :(得分:1)
我安装了mimetype-fu并且卡在了
before_validation :find_mimetype def find_mimetype attachment = self.attachment.to_file.path file = File.open(attachment) mime = File.mime_type?(file) self.attachment.instance_write(:content_type, mime) end