2013-11-05 65 views
1

我有Product模型和Order模型。假設訂單有單一產品。LIKE運營商積極記錄查詢與協會

我想搜索所有訂單與具有單詞「果味」產品名稱

下面的查詢可以讓我找回所有的訂單,其相關產品的名稱等於「果味」

Order.joins(:product).where(:products => {:name => "fruity"}) 

但我想要做的是使用LIKE運營商。我怎樣才能使用查詢界面做到這一點?

回答

3

Rails guides非常清楚地闡明瞭這一點。

你需要一個參數字符串參數where

Order.joins(:product).where('products.name like ?', '%fruity%') 

你不能做任何事情更復雜然後平等和哈希值傳遞給ActiveRecord的and基於分組;如果你想否定或LIKE,或or,你需要編寫的SQL參數化的片段:

...where('name = ? or name = ?', 'joe', 'bob') # only way to get 'or' 
...where('name != ?', 'john') # only way to get 'not equal' 

鐵軌4日,他們已經通過where.not解決否定。

+2

您可以使用'Model.where.not'語法在Rails 4中進行否定。 – Kaleidoscope

+0

有趣的是,沒有意識到這一點。 – meagar