在我的軌道控制器中,我想對我的模型進行正則表達式搜索。我的google搜索似乎表明,我將不得不寫類似:在軌道模型中進行正則表達式搜索的慣用方式?
Model.find(:all, :condition => ["field REGEXP '?' " , regex_str])
這是相當惡劣的,因爲這意味着MySQL的語法(我使用Postgres的)。
有沒有一種更簡潔的方式強迫鋼軌(我的情況是4)在字段上進行正則表達式搜索?
我也更喜歡使用where()
,因爲它允許我將強參數(散列)直接映射到查詢。所以我想是這樣的:
Model.where(params, :match_by => { 'field': '~' })
這將鬆散轉化爲類似(如果PARAMS [「場」] =「regex_str」)
select * from models where field ~ regex_str