2
我正在使用Rails 5(beta3)應用程序的API。我的模型具有序列化屬性,序列化爲數組。當我把從郵差測試請求,我得到以下錯誤:Rails 5 ActiveRecord :: SerializationTypeMismatch通過API創建資源時
ActiveRecord::SerializationTypeMismatch (Attribute was supposed to be a Array, but was a String. -- "[\"amat\",\"bmat\",\"cmat\"]"):
app/controllers/api/v1/services_controller.rb:23:in `create'
Rendered vendor/cache/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (3.1ms)
Rendered vendor/cache/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.3ms)
Rendered vendor/cache/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (0.8ms)
Rendered vendor/cache/gems/actionpack-5.0.0.beta3/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (15.3ms)
我明白了什麼錯誤意思,但我不能序列化,我從發佈請求獲得數據。在嘗試創建請求之前,我不知道如何或在何處將其序列化。
我的控制器的相關部分:
before_action :set_service, only: [:show, :edit, :update, :destroy]
def create
@service = Service.new(service_params)
if @service.save
render json: {message: 'Service created.'}, status: 200
else
render json: {message: 'Error creating Service.'}, status: 500
end
end
private
def set_service
@service = Service.find(params[:id])
end
def service_params
params.require(:service).permit(:name, :sub_service, :material, :parts)
end
服務模式:
class Service < ApplicationRecord
serialize :parts,Array
end
我發送請求爲原料JSON:
{
"service" : {
"name": "Foiling",
"sub_service":"Full",
"material":"plastic",
"parts":["parta","partb","partc"]
}
}
你如何測試請求的樣子?你在請求中發送數組還是字符串?在問題中添加了 – spickermann
。 –