質問

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

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