Ruby pg_数组适用于Model.new,但不适用于Model.update()
我在一个由PostgreSQL支持的Sinatra RESTful API中使用Sequel,并且有几个整数[]类型的列 我已经注册了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)
: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)
在通过获取答案后在此更新