【发布时间】:2020-11-11 08:37:43
【问题描述】:
我正在我的 rails 应用程序上编写一个长查询,其中一部分(最后一个 .where.not 是库存列的数量属性在其条目上不等于 0)不起作用。我当前的查询如下所示:
@products = @products.offset(offset).limit(@limit)
.where(status: "visible")
.where("add_to_inventory =? OR (add_to_inventory =? AND inventory !=? )", false, true, '{}')
.where.not("ARRAY(select (jsonb_each(inventory)).value->>'quantity' as integer)='{0}'")
但是,在我生成的产品数组中,产品 14 设法通过了此过滤,产品 14 看起来像这样。
2.4.6 :001 > Product.find(14)
Product Load (0.8ms) SELECT "products".* FROM "products" WHERE "products"."deleted" = $1 AND "products"."id" = $2 LIMIT 1 [["deleted", "f"], ["id", 14]]
=> #<Product id: 14, deleted: false, category_id: 11, created_at: "2020-10-26 10:27:22", updated_at: "2020-11-10 16:26:11", final_price: 2342.0, status: 0, inventory: {"fsaf"=>{"sku"=>"", "barcode"=>"", "quantity"=>"0"}, "werwe"=>{"sku"=>"", "barcode"=>"", "quantity"=>"0"}}, add_to_inventory: true>
可以看到库存数量为0,这是怎么通过过滤器的?
【问题讨论】:
标签: sql ruby-on-rails postgresql ruby-on-rails-4 ruby-on-rails-5