我使用Tmail library,对于邮箱中的每个附件,当我使用attachment.content_type时,有时我不仅会得到内容类型,还会得到名称.例如:

image/jpeg; name=example3.jpg

image/jpeg; name=example.jpg

image/jpeg; name=photo.JPG

image/png

我有一系列有效的内容类型,如下所示:

VALID_CONTENT_TYPES = ['image/jpeg']

我希望能够判断内容类型是否包含在任何有效的内容类型数组元素中.

在Ruby中这样做的最佳方式是什么?

推荐答案

我认为我们可以把这个问题分成两部分:

  1. 如何清除不需要的数据
  2. 如何判断清除的数据是否有效

第一个问题在上面得到了很好的回答.对于第二个问题,我将做以下几点:

(cleaned_content_types - VALID_CONTENT_TYPES) == 0

这个解决方案的好处是,您可以轻松创建一个变量来存储不需要的类型,以便在以后列出它们,如下面的示例所示:

VALID_CONTENT_TYPES = ['image/jpeg']
cleaned_content_types = ['image/png', 'image/jpeg', 'image/gif', 'image/jpeg']

undesired_types = cleaned_content_types - VALID_CONTENT_TYPES
if undesired_types.size > 0
  error_message = "The types #{undesired_types.join(', ')} are not allowed"
else
  # The happy path here
end

Ruby相关问答推荐

当数据包含换行符时,Ruby PKCS7 无法验证

Ruby - 给定一个嵌套数组的数组,如何仅比较每个嵌套数组的最后一个值来找到最大值?

如何使用 define_method 指定方法默认参数?

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

将 pp 的结果(或输出到控制台的任何内容)放入字符串

你如何称呼 Ruby 中的 &: 运算符?

Ruby: initialize() vs 类体(class body)?

Rspec: expectvsexpect什么区别?

如何判断 Capistrano 中是否存在文件(在远程服务器上)?

如何在 linux (ubuntu) 上更新 ruby​​?

Rails 在最后一个之前加入逗号和and的字符串列表

Ruby 模块 - 包括 do 结束块

Ruby代码美化,多行拆分长指令

group_by 在 rails by 2 或更多属性

Ruby:module、require和include

如何验证 RSpec 中的退出和中止?

. vs ::(点与双冒号)用于调用方法

使用 `?`(问号)在 Ruby 中获取 ASCII 字符代码失败

如何转换 Ruby 哈希,使其所有键都是符号?

为依赖于环境变量的代码编写规范的最佳方法是什么?