Я пытаюсь использовать update_all
для обновления любых записей, в которых отсутствует ключ в JSON, хранящемся в ячейке таблицы.ids
это идентификаторы этих записей, и я попробовал следующее ...
User.where(id: ids).
update_all(
"preferences = jsonb_set(preferences, '{some_key}', 'true'"
)
Где возвращается ошибка ...
Caused by PG::SyntaxError: ERROR: syntax error at or near "WHERE"
LINE 1: ...onb_set(preferences, '{some_key}', 'true' WHERE "user...
Ключ принимает строкузначение, поэтому не уверен, почему запрос не выполняется.
ОБНОВЛЕНИЕ:
Основываясь на том, что было упомянуто, я добавил скобки, а также добавил / изменил последние два аргумента...
User.where(id: ids).
update_all(
"preferences = jsonb_set(preferences, '{some_key}', 'true'::jsonb, true)"
)
все еще возникают проблемы, и на этот раз кажется, что они связаны с ключом, который я передаю
Я знаю, что этот ключ в настоящее время не существует длянабор идентификаторов
Я добавил true
для create_missing
, чтобы 1
не было проблемой
Я получил этоошибка сейчас ...
Caused by PG::UndefinedFunction: ERROR: function jsonb_set(hstore, unknown, jsonb, boolean) does not exis
some_key
должно быть ключом preferences