-1
我想查找一個標題包含'foo'或'bar'的記錄。 對於我寫的是這樣的:如何將find_by與多個「like」條件一起使用
Post.find_by('title like ? or title like ?', '%foo%', '%bar%')
此代碼工作正常,但它是一個有點多餘。 如果它完全匹配,我可以使用數組。有與like
條件相似的方法嗎?
我想查找一個標題包含'foo'或'bar'的記錄。 對於我寫的是這樣的:如何將find_by與多個「like」條件一起使用
Post.find_by('title like ? or title like ?', '%foo%', '%bar%')
此代碼工作正常,但它是一個有點多餘。 如果它完全匹配,我可以使用數組。有與like
條件相似的方法嗎?
當你將一個字符串傳遞到上面的AR查詢中時('title like ? or title like ?', '%foo%', '%bar%'
),你基本上正在寫一個SQL-ish查詢。
也就是說,實現此目標的一種方法可能在於SQL中使用關鍵字similar to
。
這將簡化查詢,並刪除重複使用title like ?
。
使用您之情況的一個例子是:
Post.find_by('title similar to ?', '%(foo|bar)%')
希望這有助於。
對我來說看起來不錯,爲什麼這個查詢_有點冗餘._?還有'''它不是一個條件,它是一個表達式。 –
@ironsand for like子句你需要用'或'分開編寫,否則你可以像'Post.where(「標題REGEXP?」,'foo | bar')一樣使用'REGEXP'' –