我有一個名爲Box的Rails模型。每個Box對象都有一個列:產品,這是一個字符串數組,包含當時存儲在其中的所有產品。選擇包含數組屬性值的Rails對象
對於每個Box對象,可能相同的值存儲在另一個Box中。
是否有一個查詢,我可以用來返回所有的價值x存儲在框中的產品?
我知道「where」適用於查找具有特定值的對象,並且您可能使用「include?」的數組,但在遇到這種情況時無法使用任何方法可能。
我有一個名爲Box的Rails模型。每個Box對象都有一個列:產品,這是一個字符串數組,包含當時存儲在其中的所有產品。選擇包含數組屬性值的Rails對象
對於每個Box對象,可能相同的值存儲在另一個Box中。
是否有一個查詢,我可以用來返回所有的價值x存儲在框中的產品?
我知道「where」適用於查找具有特定值的對象,並且您可能使用「include?」的數組,但在遇到這種情況時無法使用任何方法可能。
有這項工作之前,這裏張貼解答編輯得不錯,但我環顧四周,發現另一個更簡潔的查詢。
selected_boxes = Box.where("?=ANY(products)", x)
其中x是您正在尋找中的每個對象的值。
範圍!
scope :contains, ->(items) { where("products LIKE ?", "%#{items.to_yaml}%") } # items is an array of your potential strings
所以你把這個作爲Box.contains(%w(foo bar))
或Box.contains(['some thing'])
傳遞數組應該讓你同時搜索多個項目...
您可以隨意命名範圍什麼,顯然
像MySQL的ILIKE PostgreSQL的
我正在使用Rails 4.2.5,我無法使用此查詢。它說「錯誤的參數數量(給定2,預期1)」 – 2017-03-17 05:33:35
一直試圖找出一小時。謝謝。不知道爲什麼這沒有更多的選票。 – 2017-06-15 01:32:07