हम एम्बर डेटा और रेल का उपयोग करके एक सुविधा लागू कर रहे हैं और एक झटके मार रहे हैं। हमें यकीन नहीं है कि यह हमारे कोड के साथ एक समस्या है, एम्बर या एम्बर डेटा के साथ एक बग या सिर्फ यह कि हम दस्तावेज़ीकरण की कमी के कारण इसे प्राप्त नहीं कर रहे हैं।एम्बर एसोसिएशन और नेस्टेड यूआरएल
किसी भी मदद की वास्तव में सराहना की जाएगी।
रेल
हम एक सूची करने के लिए, कई प्रविष्टियों के साथ की है। रेल में, वे की स्थापना इस प्रकार रहे:
class ToDo < ActiveRecord::Base
has_many :to_do_entries, dependent: :destroy
alias_method :entries, :to_do_entries
validates_presence_of :title
end
class ToDoEntry < ActiveRecord::Base
attr_accessible :completed_at, :is_deleted, :priority, :title
belongs_to :to_do
alias_method :parent, :to_do
validates_presence_of :to_do, :title
end
मार्गों के रूप में नेस्टेड सेट कर रहे हैं:
resources :to_dos do
resources :to_do_entries do
end
end
और इसलिए अंत यूआरएल जा रहा है खत्म /to_do /: to_do_id/to_do_entry /: to_do_entry_id।
हम active_model_serializers मणि का उपयोग कर रहे हैं और निम्नलिखित serializers की स्थापना की है: हम एंबर डेटा और बाकी एडाप्टर और बराबर मॉडल स्थापित कर रहे हैं का उपयोग कर रहे
class ToDoSerializer < ActiveModel::Serializer
attributes :id,
:title
has_many :to_do_entries, embed: :objects
end
class ToDoEntrySerializer < ActiveModel::Serializer
attributes :id,
:to_do_id,
:title,
:priority
has_one :to_do
end
एंबर
इस प्रकार है:
App.ToDo = DS.Model.extend({
title: DS.attr('string'),
entries: DS.hasMany('App.ToDoEntry', { embedded: true })
});
App.ToDoEntry = DS.Model.extend({
title: DS.attr('string'),
to_do_id: DS.attr('number'),
priority: DS.attr('number'),
todo: DS.belongsTo('App.ToDo')
});
समस्या
मेरे समझ है कि हम टूडू से सीधे एंट्री में उपयोग करने के लिए, का उपयोग करके कंसोल में निम्नलिखित में सक्षम होना चाहिए है:
> t = App.ToDo.find(21)
> e = t.get("entries")
यह काम करने के लिए प्रतीत होता है, लेकिन सिर्फ एक वर्ग वापस आती है और मुझे नहीं पता कि इसे कैसे डिबग करना है और देखें कि यह काम कर रहा है या नहीं।
मैं दो विशिष्ट प्रश्न हैं:
हम कैसे डीबग कर सकते हैं, कंसोल का उपयोग कर, संगठनों और सुनिश्चित करें कि वे सही ढंग से काम कर रहे हैं।
यदि हम अलग-अलग प्रविष्टियों को अलग-अलग लोड करते हैं (उन्हें माता-पिता में एम्बेड करने के बजाय), हम इसे ऊपर के जैसा घोंसला वाले मार्गों का उपयोग कैसे कर सकते हैं?
आप कर सकता है कुछ देखते हैं सूट करने के लिए अनुकूलित कर सकते हैं जैसे 't.get ("प्रविष्टियां")। toArray() '। आप आईडी को सत्यापित करने में सक्षम होंगे। और आप किसी दिए गए संपत्ति का निरीक्षण करने के लिए 't.get (" प्रविष्टियां ") कुछ कर सकते हैं। ToArray() [0] .get ('title')'। मुझे विश्वास नहीं है कि आरईएसटी एडैप्टर के साथ बॉक्स के बाहर घोंसले मार्ग समर्थित हैं। वास्तव में एक [मुद्दा] (https://github.com/emberjs/data/issues/170) था जिसके बारे में मैंने खोला और अब बंद कर दिया गया है। मुझे अभी तक मेरे एडाप्टर में घोंसले वाले मार्गों को लागू करने का प्रयास करने का मौका मिला है (मैं अब सर्वर पर एक कार्य-आसपास का उपयोग कर रहा हूं)। –