ruby-on-rails - 保存时引用 Rails JSON 存储值

标签 ruby-on-rails json ruby postgresql

我在 PostgreSQL 实例上运行的 Rails (5.1.6) 应用程序有这个问题。

我有一个带有 JSON 类型列的模型 (t.json :meta)。该模型有一个商店访问器,如

store :meta, accessors: [:title], 编码器: JSON

现在的问题是当我设置这个值时它在数据库中显示为

"{\"title\":\"我是一个title\"}"

使它成为文本而不是 JSON 值,这反过来使我无法使用 JSON 查询运算符 (->>) 来查询我的 JSON 字段。我已经尝试过不使用编码器选项,但这导致它被保存为 YAML。 序列化函数也没有为我改变任何东西(添加 serialize :meta, JSON)

感谢任何帮助!

最佳答案

serializestore不适用于 native JSON 列。它们的目的是将数据编码和取消编码到字符串列中。

在 native JSON 支持存在(并由 ActiceRecord 支持)之前,这是一个“穷人”JSON 存储。如您所见,在 JSON 列上使用它会产生双重编码的字符串。

实际上,您无需执行任何操作即可使用 JSON 列。它由适配器处理。

参见:

关于ruby-on-rails - 保存时引用 Rails JSON 存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49904861/

相关文章:

ruby-on-rails - 无法为 rails 切换默认版本 ruby

php - 如何从 API 调用获取 POD 图像

php - 从 MySQL/PHP 获取嵌套/分层 JSON

Css 脉冲动画不起作用

Ruby:一个函数返回另一个函数

javascript - Chartkick Rails 4 条形图问题与多个图表

ruby-on-rails - 在表单标签中包含链接吗?

ruby :console.log?

css - Slim & Rails - 如何在同一行获取文本和按钮

java - Jackson继承——使用@JsonProperty解析子类中的嵌套JSON