我有Product
模型和Order
模型。假設訂單有單一產品。LIKE運營商積極記錄查詢與協會
我想搜索所有訂單與具有單詞「果味」產品名稱
下面的查詢可以讓我找回所有的訂單,其相關產品的名稱等於「果味」
Order.joins(:product).where(:products => {:name => "fruity"})
但我想要做的是使用LIKE
運營商。我怎樣才能使用查詢界面做到這一點?
我有Product
模型和Order
模型。假設訂單有單一產品。LIKE運營商積極記錄查詢與協會
我想搜索所有訂單與具有單詞「果味」產品名稱
下面的查詢可以讓我找回所有的訂單,其相關產品的名稱等於「果味」
Order.joins(:product).where(:products => {:name => "fruity"})
但我想要做的是使用LIKE
運營商。我怎樣才能使用查詢界面做到這一點?
該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
解決否定。
該squeel
寶石https://github.com/ernie/squeel#compound-conditions讓你這樣做,而無需編寫原始SQL。
您可以使用'Model.where.not'語法在Rails 4中進行否定。 – Kaleidoscope
有趣的是,沒有意識到這一點。 – meagar