我正在使用Rails-4,有一个产品型号和存储的规格作为JSon类型
在迁移文件中,添加add_column :products, :specifications, :json
示例产品记录如下所示
#<Product id: 1, prod_id: 525141, cat_id: 6716, category_id: 5, updated: "2013-09-24 07:37:20", created_at: "2014-03-07 12:21:34", updated_at: "2014-03-07 12:32:36", eans: ["4016032274001"], skus: ["DK-1511-010F/WH"], account_id: 2, specifications: {"network"=>["PCI-Express 2.1 16x", "CardBus", "PCI-Express 3.0 16x", "PCI 64-bit, 66MHz", "PCI 64-bit, 33MHz", "PCI 32-bit, 66MHz", "PCI 3.0", "PCI 2.3", "PCI 2.2", "PCI-X", "PCI-Express 16x", "PCI-Express 8x", "PCI-Express 4x", "PCI-Express 2.0 16x", "PCI-Express 1x", "PCI", "PC Card", "ISA", "AGP 8x", "AGP 4x", "AGP 2x", "AGP 1x"], "rating"=>[4]}>
我想查询产品的Specification.eg:获取所有评级(内部规格)等于4的产品。
有没有什么gem可以用来实现这一点?
发布于 2014-12-24 10:40:11
随着Postgres 9.4的Rails 4.2中jsonb的出现,如果rating字段是字符串而不是整数,就可以做到这一点。下面是一个例子。
Dynamic.create(payload: {"rating"=>['4']})
Dynamic.create(payload: {"rating"=>['3']})
Dynamic.where("payload -> 'rating' ? '4'").count这将为您提供适当的记录。您必须将json字段更新为jsonb。您可以通过遵循我的响应here来完成此操作。
您可以找到有关如何使用jsonb in Rails 4.2 here的更多信息。
发布于 2014-03-07 21:32:18
是的,通过Gem:https://github.com/jcoglan/siren在Rails中实现了JSONQuery
https://stackoverflow.com/questions/22250908
复制相似问题