在序列化模型数组中查找值
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 什么都没有。
如果有人问过这个问题,请将正确答案转发给我。如果没有,非常感谢任何时间帮助我。
运行:
- Rails 4.2.4
- Ruby 2.3.1.p112
- SQLite3
虽然我不建议这样做,但补丁工作如下
Product.all.select { |m| m.product_category.include? '3' }
不要对以后需要查询的任何数据使用#serialize
实现此目的的最佳方法是通过 where 子句
Product.where("product_category = ?", [3].to_yaml)
.to_yaml 就可以了。
我不确定是否已经对此进行了解释,也许我问错了问题,但我希望有人能帮助我解决这个问题。
我正在寻找模型数组中的值。我的模型如下所示:
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 什么都没有。
如果有人问过这个问题,请将正确答案转发给我。如果没有,非常感谢任何时间帮助我。
运行:
- Rails 4.2.4
- Ruby 2.3.1.p112
- SQLite3
虽然我不建议这样做,但补丁工作如下
Product.all.select { |m| m.product_category.include? '3' }
不要对以后需要查询的任何数据使用#serialize
实现此目的的最佳方法是通过 where 子句
Product.where("product_category = ?", [3].to_yaml)
.to_yaml 就可以了。