续集Grep使用变量作为匹配器

时间:2014-01-09 19:43:45

标签: ruby grep sequel

我想使用续集的Models对象进行查询。我希望模式匹配某些变量值,如下所示:

Models::Show.grep(:name, %w'#{var1} #{var2}')

但不幸的是,Models.grep实例方法似乎没有这样做。它查询如下:

SELECT * FROM "shows" 
WHERE (("name" LIKE '#{titre_fr}' ESCAPE '\') 
OR ("name" LIKE ' {titre_en}' ESCAPE '\'))

有没有办法让函数与变量一起使用?

2 个答案:

答案 0 :(得分:1)

请按以下步骤操作:

Models::Show.grep(:name, %W(#{var1} #{var2}))

演示示例:

a = 2
b = 3
%W(#{a} #{b}) # => ["2", "3"]

另请阅读Ruby arrays: %w vs %W

答案 1 :(得分:0)

您的代码

Models::Show.grep(:name, %w'#{var1} #{var2}')

使用单引号。更改为双引号,它将起作用

Models::Show.grep(:name, %w"#{var1} #{var2}")