rails where 中的嵌套值查询

Nested value query inside rails where

查询 @products = @products.offset(offset).limit(@limit).where(status: "visible").where.not(inventory: [nil, {}])

如何添加 where.not((product.inventory.length == 1 and product.inventory.first[1]["quantity"].to_i == 0)))))

即如何检查 属性 inventory 的长度和 if 1 检查第一个条目的数量,并满足上述条件?

使用 jsonb 运算符

@products = 
  @products
    .offset(offset)
    .limit(@limit)
    .where(status: "visible")
    .where.not(inventory: [nil, {}])
    .where.not("ARRAY(select (jsonb_each(inventory)).value->>'quantity' as integer)='{0}'")