2017-10-16 11 views
0

나는이 gem을 사용하고 있으며 다형성 관계를 구현하는 데 어려움을 겪고 있습니다.JSONApi가 다형성 관계에 대해 작동하지 않습니다. 레일

나는 polymorphicproducts 리소스를 가지고 있습니다. 적절한 경로와 경로가 있습니다.

내 모델 : 나는 또한 일반 액티브 모델이

class Product < ActiveRecord::Base 
    include Priceable 

    belongs_to :producible, polymorphic: true 
... 

을하고 난 Beer 또는 Apples

module Producible 
    extend ActiveSupport::Concern 

    included do 
    has_one :product, as: :producible, inverse_of: :producible 

내 경로처럼 producible 클래스에 포함이 관심을 가지고 :

jsonapi_resource :products

/api/products/relationships/producible

내 자원

(나는뿐만 아니라 다형성 자원을 필요로 들었다).

class Api::ProductResource < JSONAPI::Resource 
    attributes :producible_type, :plan_id, :is_selling_enabled 

    belongs_to :producible, polymorphic: true 
end 

class Api::ProducibleResource < JSONAPI::Resource 
end 

내 컨트롤러 :

module Api 
    class ProductsController < Api::BaseJsonapiController 
end 
end 

module Api 
    class ProduciblesController < Api::BaseJsonapiController 
    end 
end 

내가 위에 나열된 경로로 이동하려고 할 때이 오류가 발생합니다 :

{ 
"errors": [ 
{ 
"title": "Missing Parameter", 
"detail": "The required parameter, product_id, is missing.", 
"code": "106", 
"status": "400" 
} 
] 
} 

이 이상해 그 경로가 요구하지 않는 것 같아서 product_id 맞지?

+0

생산 가능한 모델에'''product_id'''가 있습니까? –

+0

그래서 오류가 내가 사용한 경로였습니다. 나는'jsonapi_resources : products '대신에'jsonapi_resource : products'를 사용하는 것이 어떤 이유로 실패했다고 생각합니다. – Jwan622

+0

나는'products' 테이블에'producible_id'를 가지고 있습니다. – Jwan622

답변

0

오류로 인해 생산 가능한 모델에는 product_id이 없습니다. 따라서 귀하의 관계 belongs_to :producible, polymorphic: true이 작동하지 않습니다.

제품 모델에 producible_id을 갖고 싶다고 생각합니다. 이 경우 belongs_to 관계를 has_one으로 전환하고 belongs_to을 생산 가능 모델에 넣어야합니다.

문제가 있으면 active record relations에 대한 공식 레일 문서를 읽어 보시기 바랍니다.

희망이 도움이 될 것입니다.