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

时间:2016-07-22 11:16:14

标签: ruby-on-rails arrays ruby serialization models

我不确定是否已在此处记录了解释,也许即时提出错误的问题,但我希望有人可以帮我解决这个问题。

我在模型数组中寻找一个值。我的模型看起来像这样:

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])

但这不会返回任何东西。

如果已经提出这个问题,请转发给我正确答案。如果没有,非常感谢任何帮助我的时间。

运行:

  • Rails 4.2.4
  • Ruby 2.3.1.p112
  • SQLite3的

2 个答案:

答案 0 :(得分:2)

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

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

不要将#serialize用于以后需要查询的任何数据

答案 1 :(得分:0)

实现这一目标的最佳方法是通过where子句

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

.to_yaml会做到这一点。