Francis.Beauchamp Francis.Beauchamp - 4 months ago 12
Ruby Question

Sequel Grep using variables as matcher

I'd like to do a query using the Sequel's

Models
object. I'd like the pattern to match certain variables value like so:

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


But unfortunately, the Models.grep instance method seems not to be working this way. It query as following:

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


Is there a way to make the function work with variables ?

Answer

Just do as below :

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

Demo example :

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

Read this also Ruby arrays: %w vs %W.

Comments