Contexte: Nous utilisons PaperTrail pour conserver l'historique de nos modèles changeants. Maintenant, je veux interroger pour un article, qui appartenait à un certain client. PaperTrail stocke facultativement le object_changes
et j'ai besoin d'interroger ce champ pour comprendre, quand quelque chose a été créé avec cet ID ou changé pour cet ID.Requête tableau jsonb pour le membre entier
Ma table semble simplifiée comme ceci:
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"]}
Comment faire une requête pour les éléments modifiés en provenance ou à ID 5 (donc toutes les lignes ci-dessus)? J'ai essayé:
SELECT * FROM versions WHERE object_changes->'customer_id' ? 5;
Ce qui m'a:
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.
Vous pourriez également aimer la méthode 'where_object_changes'. C'est supposé être un moyen pratique de faire une clause 'where' pour la colonne' object_changes'. –
Alors, avez-vous votre réponse? –