Ruby Sequel 和模式数组

Ruby Sequel and array of patterns

我有一组用于 ILIKE 的模式,这是一个带有其他过滤器的现有数据集,我想将其添加到其中。

patterns = ['abc%', 'bcd', '%cde', ...]

我使用 Postgres,所以在 SQL 中我会做类似 AND field ILIKE ANY('abc%', ...) 的事情,但是如何实现它(或类似的事情,比如动态 AND (field ILIKE 'abc' OR field ILIKE 'bcd')?理想的情况是什么Sequel?

的解决方案

谢谢!

以下任何一个都应该有效

where(ary.map {|val| Sequel.ilike(:column_name, val)}.reduce(&:|))
#or
where(Sequel.lit("table_name.column_name ILIKE ANY(#{ary.map(&:inspect).join(',')})"))

我个人更喜欢前者,但如果您控制 ary 的内容,那么两者都应该毫无问题地执行。