Ich baue eine Dashboard-Anwendung für eine Buchhaltungsabteilung.Modellierung von Objekten ohne ID in Ember-Daten
Der Benutzer wird einen Monat auswählen und alle Unternehmen anzeigen, die bestimmte Kriterien in diesem Monat erfüllen. Die Routen werden
sein/:month_id a summary page
/:month_id/companies more details about each company
/:month_id/companies/:company_id all details about a single company
Im Idealfall würde ich ein month
Modell hasMany
company
Modelle, die haben. Das einzige Problem ist, dass Unternehmen in mehreren Monaten auftauchen werden.
Korrigieren Sie mich, wenn ich falsch liege, aber bedeutet das nicht, dass wenn eine Firma bereits im Geschäft ist, wenn ein neuer Monat angefordert wird, die Daten des Unternehmens vom Laden statt vom Server genommen werden? Die Daten werden für jeden Monat unterschiedlich sein, das würde für mich nicht funktionieren.
Ich nehme an, in dieser Anwendung ist die ID jedes Unternehmens wirklich ihre normale, ganzzahlige ID plus den ausgewählten Monat. Ein Weg wäre also, jeder Firma eine ID wie '15-Mar-2013'
zu geben.
Alternativ könnte ich einfach jeden Monat companies
Daten durch rohe und tun Transformationen auf dem Plain-Array übergeben. Das Problem dabei ist jedoch, dass ich Aggregate für Unternehmen berechnen muss (zusätzlich zum gesamten Monat), und es wäre sehr nett, diese beiden Dinge getrennt zu halten. Wenn ich ein völlig separates Firmenmodell hätte, könnte ich einfach in die Stadt innerhalb des Modells gehen:
App.Company = DS.Model.extend({
month: DS.belongsTo('App.Month'),
name: DS.attr('string'),
contracts: DS.hasMany('App.Contract'),
totalRevenue: function() {
return this.get('contracts')
.filterProperty('type', 'newSetup')
.getEach('feeChange').reduce(function(accum, item) {
return accum + item;
}, 0);
}.property('[email protected]'),
...additional aggregation functions
});
Was denkst du?
Wenn die Daten für das Unternehmen jeden Monat anders sind, ist der Datensatz kein Unternehmen. Es ist ein 'CompanyReport' oder so. –
Einverstanden, aber immer noch - wie das Problem zu lösen? Weisen Sie dem 'CompanyReport' eine beliebige ID zu? Der 'CompanyReport' ist im Wesentlichen ein gefilterter Snapshot einiger Serverdaten. –