我正在尝试使用arel表来匹配表中与正则表达式匹配的列的所有实例。这对于字符串很容易起作用,但是当搜索字段是枚举时,它将不起作用。
我查询数据库的代码如下:
res = Test::Table
arel_tbl = res.arel_table["spec_type"].parameterize.underscore.to_sym
res = res.where(arel_tbl.matches("%#NewProd%"))
因此,使用上述代码,如果我的“ spec_type”列包含字符串类型的值,则查询有效,但在我的实例中,该列下的所有值均为枚举,因此我需要将其转换为文本以与常规进行比较表达。
以这种方式工作的ActiveRecord查询示例如下所示:
Test::Table.where("spec_type::text like '%NewProd%'")
所以该查询之所以有效,是因为我将spec_type强制为text类型,从而允许我的SQL查询针对正则表达式调用LIKE。我如何通过Arel表获得相同的功能?我想要arel表,因为它会自动引用我的数据。