在序列化模型数组中查找值

Finding a value in a serialized model array

我不确定是否已经对此进行了解释,也许我问错了问题,但我希望有人能帮助我解决这个问题。

我正在寻找模型数组中的值。我的模型如下所示:

class Product < ActiveRecord::Base
    #  product_category    :text
    serialize :product_category, Array
end

条目示例:

#<Product:0x0055cd0c1382b8> {
       :id => 42266,
       :product_category => [
           [0] 8, [1] 3
       ]
}

我需要找到属于 product_category 3 或 3 和其他类别组合的所有产品。

我试过

ap Product.where(product_category: [8])

但是这 return 什么都没有。

如果有人问过这个问题,请将正确答案转发给我。如果没有,非常感谢任何时间帮助我。

运行:

虽然我不建议这样做,但补丁工作如下

Product.all.select { |m| m.product_category.include? '3' }

不要对以后需要查询的任何数据使用#serialize

实现此目的的最佳方法是通过 where 子句

Product.where("product_category = ?", [3].to_yaml)

.to_yaml 就可以了。