2013-07-25 5 views
5

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 hasManycompany 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?

+1

Wenn die Daten für das Unternehmen jeden Monat anders sind, ist der Datensatz kein Unternehmen. Es ist ein 'CompanyReport' oder so. –

+0

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. –

Antwort

0

Es macht keinen Sinn für mich, dass Monate eigene Unternehmen, was Ihre month[1]->[N]company Beziehung angibt.

Was Sie sagen möchten, ist, dass Sie nach allen Firmen suchen, die bestimmte Kriterien haben, die innerhalb eines Monats auftreten. Der ausgewählte Monat ist nur ein Teil der Suchkriterien.

+0

Einverstanden, aber es ist eher ein 'MonthlyReport', und für mich macht das Sinn. In diesem Fall, wie das Problem zu lösen? –

+0

Wenn Sie nach einem Bericht mit einem Lesezeichen suchen, würde ich wahrscheinlich etwas wie "/ companies/reports /: reportName /: yyyy /: mm" tun, um den spezifischen Bericht zu identifizieren. Oder "/ reports/periodic /: yyyy /: mm /: reportName" oder "/ reports/monatlich /: yyyy /: mm /: name ' –

+0

Ich benutze: Monats-ID als: yyyy /: mm (es geht etwas wie "Jan-2013" zu sein. Also weiß ich immer noch nicht, wie ich das Problem lösen soll. –

Verwandte Themen