【发布时间】:2018-02-22 09:20:06
【问题描述】:
背景:我们使用 PaperTrail 来保存我们不断变化的模型的历史。现在我想查询属于某个客户的商品。 PaperTrail 可选择存储object_changes,我需要查询此字段以了解何时使用此 ID 创建或更改为此 ID。
我的表格看起来像这样简化:
item_type | object_changes
----------|----------------------------------------------------------
"Item" | {"customer_id": [null, 5], "other": [null, "change"]}
"Item" | {"customer_id": [4, 5], "other": ["unrelated", "change"]}
"Item" | {"customer_id": [5, 6], "other": ["asht", "asht"]}
如何查询从 ID 5 更改为或更改为 ID 5 的元素(以上所有行)?我试过了:
SELECT * FROM versions WHERE object_changes->'customer_id' ? 5;
这让我:
ERROR: operator does not exist: jsonb ? integer LINE 1: ...T * FROM versions WHERE object_changes->'customer_id' ? 5; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
【问题讨论】:
-
您可能还喜欢
where_object_changes方法。这应该是为object_changes列创建where子句的便捷方式。 -
那么你有答案了吗?
标签: ruby-on-rails postgresql jsonb paper-trail-gem postgresql-9.6