Rails JSON存储值在保存时被引用

时间:2018-04-18 16:38:42

标签: ruby-on-rails json ruby postgresql

我在PostgreSQL实例上运行的Rails(5.1.6)应用程序出现此问题。

我有一个带有JSON类型列(tfx extension publish --service-url "http://fqdn:8080/tfs")的模型。该模型有一个商店访问器,如

t.json :meta

问题是,当我设置此值时,它在数据库中显示为

store :meta, accessors: [:title], coder: JSON

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

感谢任何和所有帮助!

1 个答案:

答案 0 :(得分:3)

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

在存在本机JSON支持之前,这是一个“穷人”JSON存储(并且由ActiceRecord支持)。在JSON列上使用它将导致您注意到的双重编码字符串。

您实际上不必做任何事情来使用JSON列。它由适配器处理。

请参阅: