我想在我的Rails應用程序中創建一個動態正則表達式。我在我的數據庫中有一個名爲foo
的表。 foo
由兩列組成,即id
和phrase
,它們只是varchar(255)。我希望能夠使所有'短語'實例都加入一個巨大的表達式,並看看傳入的參數是否與短語中的任何單詞匹配。我認爲像下面這樣的東西可能會這樣做,但它似乎並不適用。我究竟做錯了什麼?Ruby中的正則表達式動態創建
# get all phrases
phrases = Foo.all.map(&:phrase)
regex = Regexp.new phrases.join('|')
if params[:some_text] =~ regex
# something in params[:some_text] matched at least one phrase
end
爲什麼不只是''Foo.where(:phrase => params [:some_text])。present?' –
因爲如果''params [:some_text] ==「Hello World」'和短語只是'世界',它不會起作用。 – randombits
什麼不適合你? –