2017-11-03 4 views
0

私はgem jsonapi-rbに問題があります。私はシリアライズ可能でリレーションを使用しようとしますが、動作します。jsonapi-rb Relationshipを持つprobleams

モデル

class Customer < ApplicationRecord 
    has_one :card 
end 

class Card < ApplicationRecord 
    belongs_to :customer 
end 

、シリアライズ

class SerializableCustomer < JSONAPI::Serializable::Resource 
    type :customer 
    attributes :id 

    has_one :card do 
    data do 
     @object.card 
    end 
    end 
end 


class SerializableCard < JSONAPI::Serializable::Resource 
    type :card 
    attributes :id, :stripe_id, :exp_month 

    belongs_to :customer do 
    data do 
     @object.customer 
    end 
    end 
end 

顧客はすでにカードを持っているが、私は、応答を取得するだけで、顧客の関係で取得しようとすると、私は約データを取得いけませんカード

SerializableCustomer.new(object: customer) 

応答

{ 
    "id": "1", 
    "type": "customer", 
    "attributes": { 
    "id": "1", 
    }, 
    "relationships": { 
    "card": { 
     "meta": { 
     "included": false 
     } 
    } 
    } 
} 
+1

「has_one:card」だけでは不十分ですか? – max

答えて

0

カード関係のデータを含める。あなたの初期化にそれを含める必要があります。既定では、リンクされたデータを含めると、リレーションシップのリンクデータのみがシリアル化されます。

JSONをレンダリングする際にもこれを含めることができます。

render jsonapi: customer, include: [:cards]