-
12-11-2019 - |
题
我需要做一个我找到具有某些扩展的所有文件的范围 - 我当前的非功能尝试是这样:
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类型作为自己的列存储,并查询该文件。它比使用字符串函数更加性能。实施本身将是类似的,但更简单。
不隶属于 StackOverflow