2017-11-03 9 views
0

Ich habe ein Problem mit dem Edelstein Jsonapi-rb, ich versuche, die Beziehung in der Serialisierung verwendet, aber es funktioniert.Jsonapi-rb Probleme mit Relationshipship

die Modelle

class Customer < ApplicationRecord 
    has_one :card 
end 

class Card < ApplicationRecord 
    belongs_to :customer 
end 

Die serializable

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 

der Kunde hat bereits eine Karte, aber wenn ich versuche, die reagiert zu bekommen, nur in den Beziehungen von Kunden zu bekommen, ich nicht Daten über das bekommen Karte

SerializableCustomer.new(object: customer) 

respond

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

Sind Sie sicher, dass 'has_one: card' nicht ausreicht? – max

Antwort

0

Die Daten für die Kartenbeziehung enthalten. Sie müssen es in Ihre Initialisierung einbeziehen. Standardmäßig werden die verknüpften Daten für eine Beziehung nur dann serialisiert, wenn Sie sie einschließen.

SerializableCustomer.new(object: customer, include: [:cards]) 

Sie können dies auch enthalten, wenn Ihre JSON-Rendering.

render jsonapi: customer, include: [:cards]