2016-03-22 11 views
1

ile bir ilişki dahil, Active Model seri hale 0.10.0.rc4 kullanıyorum. Bir json hashına bir ilişki eklemek istiyorum.bir raylar 5 uygulamasında aktif Model seri hale

Bu seri hale vardır:

class GroupSerializer < ActiveModel::Serializer 
    attributes :id, :name, :subscription_ids, :nb_places, :description, 
    :schedule, :course_id 
end 

Ve böyle kullanıyorum:

resource = Group.all 
ActiveModel::Serializer.serializer_for(resource).new(resource, include: :subscriptions).as_json 

Ve bu var:

{"group"=>{:id=>1, :name=>"12", :subscription_ids=>[1, 2, 3], :nb_places=>12, :description=>nil, :schedule=>"12", :course_id=>1}} 

Nedenini anlamıyorum abonelikler dahil değildir. Birden kurallar varken sonsuz döngüye neden çünkü serileştiriciye içinde has_many kullanmak istemiyoruz.

{"group"=>{:id=>1, :name=>"12", :subscription_ids=>[1], :nb_places=>12, :description=>nil, :schedule=>"12", :course_id=>1, :subscriptions=>[{:id=>1,:name=>'something'}]} 

Ne yapabilirim:

Böyle bir şey ister misin?

cevap

1

Böyle bir abonelikler yöntemi oluşturabilirsiniz:

attributes :subscriptions 

def subscriptions 
    object.subscriptions.as_json(only: [:id, :name]) 
end 
+0

Üzgünüm ama net değil idin. Abonelik_varlığım var ancak abonelik verilerine sahip değilim. Soruyu güncelliyorum. – Dougui

+0

@Dougui cevabımı güncelledik. – miligraf

+0

Doğru olacağını düşünüyorum. 'O' object.subscriptions.pluck ([:: id, adı]) ile birlikte çalışacaktır. "As_json" yöntemiyle "include" gibi bir şey kullanmayı tercih ederim ama eğer daha iyi bir yol yoksa çözümünüzü kullanacağım. Teşekkürler. – Dougui

İlgili konular