我需要做一个我找到具有某些扩展的所有文件的范围 - 我当前的非功能尝试是这样:

scope :visual, where(%w[.gif .jpg .jpeg .tif .tiff].include? File.extname(item_file_name), true)
.

此尝试给了我错误 - 你如何创建条件不仅仅是直的SQL查询的范围?

有帮助吗?

解决方案

您需要直接代码这些条件。

scope :visual, where("RIGHT(item_file_name,3) IN (?)
                      OR RIGHT(item_file_name,4) IN (?)",
               ['gif', 'jpg', 'tif'],
               ['jpeg', 'tiff'])
.

我建议将文件扩展名或mime类型作为自己的列存储,并查询该文件。它比使用字符串函数更加性能。实施本身将是类似的,但更简单。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top