如何查询具有空序列化字段的模型



当我有一个类似的模型时

class Order < ActiveRecord::Base
    serialize :shipping_lines
    ...
end

如何查找shipping_lines为空的所有记录?如果我这样做,

Order.select(order.shipping_lines).limit(5)

我明白了,

=> [#<Order id: nil, shipping_lines: [#<ShippingLine:0x007f8c5d10ced0>]>,
 #<Order id: nil, shipping_lines: [#<ShippingLine:0x007f8c6ef84718>]>,
 #<Order id: nil, shipping_lines: []>,
 #<Order id: nil, shipping_lines: []>,
 #<Order id: nil, shipping_lines: []>

但是查询Order.where(shipping_lines: [])产生[]并且在同一查询上调用to_sql产生=> "SELECT "orders".* FROM "orders" WHERE 1=0"

我应该如何为其运输线路只选择具有默认值或空数组的订单?

在我的项目中处理类似问题时,我发现的唯一方法是直接将空数组强制转换为YAML,如下所示:

Order.where(shipping_lines: [].to_yaml)

看起来像一个肮脏的黑客,但至少它解决了问题。

相关内容

  • 没有找到相关文章

最新更新