1

特定の拡張子を持つすべてのファイルを見つけるスコープを実行する必要があります-私の現在の機能しない試みはこれです:

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

この試みは私にエラーを与えます-条件が単なるSQLクエリではないスコープをどのように作成しますか?

4

1 に答える 1

0

これらの基準を直接コーディングする必要があります。

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

ファイル拡張子またはMIMEタイプを独自の列として保存し、それに対してクエリを実行することをお勧めします。文字列関数を使用するよりもパフォーマンスが向上します。実装自体は似ていますが、より単純です。

于 2011-05-13T04:08:10.640 に答える