Stiamo implementando una funzione utilizzando i dati e le rotaie di rame e continuiamo a colpire. Non siamo sicuri se si tratta di un problema con il nostro codice, un bug con i dati di Ember o Ember o semplicemente che non lo stiamo ottenendo a causa della mancanza di documentazione.Associazioni di braci e URL nidificati
Qualsiasi aiuto sarebbe molto apprezzato.
Rails
Abbiamo un elenco di fare, con più voci. In Rails, vengono impostate come segue:
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
I percorsi sono impostati come nidificata:
resources :to_dos do
resources :to_do_entries do
end
end
E così gli URL finali finiscono per essere /to_do /: to_do_id/to_do_entry /: to_do_entry_id.
Stiamo usando la gemma active_model_serializers e hanno i seguenti serializzatori configurare:
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
Ember
Stiamo utilizzando i dati tempora e l'adattatore REST e dei modelli equivalenti sono impostati come segue:
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')
});
Il problema
mia comprensione è che dovremmo essere in grado di accedere alla lista di voci direttamente dalla ToDo, utilizzando il seguente nella console:
> t = App.ToDo.find(21)
> e = t.get("entries")
Questo non sembra funzionare, ma restituisce solo una classe e Non ho idea di come eseguire il debug e vedere se funziona.
Ho due domande specifiche:
Come possiamo eseguire il debug, utilizzando la console, le associazioni e assicurarsi che siano correttamente funzionanti.
Se carichiamo le voci separatamente (invece di averle incorporate nel genitore), come possiamo utilizzarle come percorsi annidati come quello che abbiamo sopra?
Si potrebbe fare qualcosa come 't.get (" entries "). toArray()'. Sarai in grado di verificare gli ID. E puoi fare qualcosa come 't.get (" entries "). ToArray() [0] .get ('title')' per ispezionare una determinata proprietà. Non credo che le rotte del nido siano supportate immediatamente con l'adattore REST. In realtà c'era un [problema] (https://github.com/emberjs/data/issues/170) su di esso che ho aperto e ora è stato chiuso. Ho ancora avuto la possibilità di provare a implementare percorsi nidificati nel mio adattatore (per il momento sto utilizzando un work-around sul server). –