Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails JSON存储值在保存时被引用_Ruby On Rails_Json_Ruby_Postgresql - Fatal编程技术网

Ruby on rails Rails JSON存储值在保存时被引用

Ruby on rails Rails JSON存储值在保存时被引用,ruby-on-rails,json,ruby,postgresql,Ruby On Rails,Json,Ruby,Postgresql,我在PostgreSQL实例上运行的Rails(5.1.6)应用程序有这个问题 我有一个带有JSON类型列的模型(t.JSON:meta)。该模型有一个存储访问器,如 store:meta,accessor:[:title],coder:JSON 现在的问题是,当我设置这个值时,它在数据库中显示为 “{\“title\:\“我是一个title\”}” 将其设置为文本而不是JSON值,这反过来使我无法使用JSON查询运算符(->)查询JSON字段。我已经尝试不使用coder选项,但这导致它被保存为

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

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

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

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

“{\“title\:\“我是一个title\”}”

将其设置为文本而不是JSON值,这反过来使我无法使用JSON查询运算符(
->
)查询JSON字段。我已经尝试不使用coder选项,但这导致它被保存为YAML。 serialize函数对我来说也没有任何改变(添加
serialize:meta,JSON

感谢您的任何帮助

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

在原生JSON支持存在之前(并且由ActiceRecord支持),这是一个“穷人”JSON存储。正如您所注意到的,在JSON列上使用它将产生一个双编码字符串

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

见:


好的,谢谢你澄清这一点。有没有一种简单的方法来定义JSON内部数据的访问器?因此,我不必每次想访问标题时都调用
meta[“title”]
来回答我自己的问题<代码>存储访问器执行此操作。