2016-05-19 59 views
-1

我想查找一個標題包含'foo'或'bar'的記錄。 對於我寫的是這樣的:如何將find_by與多個「like」條件一起使用

Post.find_by('title like ? or title like ?', '%foo%', '%bar%') 

此代碼工作正常,但它是一個有點多餘。 如果它完全匹配,我可以使用數組。有與like條件相似的方法嗎?

+0

對我來說看起來不錯,爲什麼這個查詢_有點冗餘._?還有'''它不是一個條件,它是一個表達式。 –

+0

@ironsand for like子句你需要用'或'分開編寫,否則你可以像'Post.where(「標題REGEXP?」,'foo | bar')一樣使用'REGEXP'' –

回答

1

當你將一個字符串傳遞到上面的AR查詢中時('title like ? or title like ?', '%foo%', '%bar%'),你基本上正在寫一個SQL-ish查詢。

也就是說,實現此目標的一種方法可能在於SQL中使用關鍵字similar to

這將簡化查詢,並刪除重複使用title like ?

使用您之情況的一個例子是:

Post.find_by('title similar to ?', '%(foo|bar)%') 

希望這有助於。

相關問題