Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 pg_数组适用于Model.new,但不适用于Model.update()_Ruby_Sinatra_Sequel - Fatal编程技术网

Ruby pg_数组适用于Model.new,但不适用于Model.update()

Ruby pg_数组适用于Model.new,但不适用于Model.update(),ruby,sinatra,sequel,Ruby,Sinatra,Sequel,我在一个由PostgreSQL支持的Sinatra RESTful API中使用Sequel,并且有几个整数[]类型的列 我已经注册了:pg_数组扩展,保存新记录效果良好: x = MyModel.new(params[:mymodel]) x.save 但是,当我调用update时: data = JSON.parse(request.body.read)['mymodel'] x = MyModel.where(:id => params[:id]) x.update(data)

我在一个由PostgreSQL支持的Sinatra RESTful API中使用Sequel,并且有几个整数[]类型的列

我已经注册了
:pg_数组
扩展,保存新记录效果良好:

x = MyModel.new(params[:mymodel])
x.save
但是,当我调用update时:

data = JSON.parse(request.body.read)['mymodel']

x = MyModel.where(:id => params[:id])
x.update(data)
它失败,出现以下错误:

Sequel::DatabaseError - PG::InvalidTextRepresentation: ERROR: array value must
start with "{" or dimension information
LINE 1: ...olumn2" = NULL, "column3" = 'Some Text', "arrayField" = ('1'), "col...
                                                                    ^
该列定义为
integer:arrayField,:type=>“integer[]”
,数组字段的JSON表示形式在对API的create和update调用中都被传递为
“arrayField”:[“1”]

似乎新记录的数组类型已正确拾取,但在更新现有记录时未正确拾取。有人能指出我哪里出了错吗


谢谢。

原来我打的是数据集.update,而不是模型.update

解决方法是使用。首先,而不是。在哪里

data  = JSON.parse(request.body.read)['mymodel']

x = MyModel.first(:id => params[:id])
x.update(data)
在通过获取答案后在此更新