例如,我想結合兩個數組,並添加where子句像這樣:Ruby on Rails:你如何結合兩個數組並使用「where」方法?
(Recipe.current + Recipe.previous)。凡(:名稱=> 「ABC」)
我知道你可以將它合併成一個(Recipe.where(「current is true or previous is true」)),但我有一些複雜的查詢迫使我以上述方式組合數組。
可能嗎?
例如,我想結合兩個數組,並添加where子句像這樣:Ruby on Rails:你如何結合兩個數組並使用「where」方法?
(Recipe.current + Recipe.previous)。凡(:名稱=> 「ABC」)
我知道你可以將它合併成一個(Recipe.where(「current is true or previous is true」)),但我有一些複雜的查詢迫使我以上述方式組合數組。
可能嗎?
答案取決於您想要運行多少個數據庫查詢來獲取信息。
如果它的好有2個數據庫查詢,你可以做這樣的事情:
rel = Recipe.where(:name => "ABC")
recipes = rel.current | rel.previous
如果你想擁有這一切在1個數據庫查詢,你有你的關係到使用OR
條款,除非您想超越常規ActiveRecord方法並使用Arel或查詢生成寶石之一。
這是完美的!非常感謝你Cypher :) – sjsc
我想你想在Rails中做一個複雜的單個SQL查詢來存檔你的目標? 如果你可以在普通的SQL查詢中做到這一點,通常可以在Rails中使用。
構建自定義的SQL查詢字符串可能是另一種解決方案。
另一種方法是組合這些數組並使用Ruby的「拒絕!」要刪除與您的模式不匹配的元素,可能會出現一些性能問題。
「當前」和「前一個」作用域?我以爲你可以鏈接範圍。 –
你想讓結果數組包含組合的數組,還是聯合或數組? (會在答案上有所不同) – JasCav
我使用「當前」和「前一個」來區分不同的集合。對困惑感到抱歉。我知道你可以鏈接範圍,但我期望先結合兩個數組,然後才能夠使用「where」方法。 – sjsc