【问题标题】:Unusual scope in RailsRails 中的异常范围
【发布时间】:2011-05-13 12:17:37
【问题描述】:

我需要做一个范围,在其中找到所有具有特定扩展名的文件 - 我当前的非功能性尝试是这样的:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 scopes


    【解决方案1】:

    您需要直接对这些条件进行编码。

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

    我建议将文件扩展名或 MIME 类型存储为自己的列,并针对它进行查询。它将比使用字符串函数更高效。实现本身将类似,但更简单。

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 2010-12-11
      • 2013-04-30
      • 2014-11-12
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多