2013-07-25 4 views
5

私は会計部門のダッシュボードアプリケーションを構築しています。emberデータにIDのないオブジェクトをモデル化する

ユーザは1か月を選択し、その月に特定の基準を満たすすべての企業を表示します。ルートは

/:month_id       a summary page 
/:month_id/companies    more details about each company 
/:month_id/companies/:company_id all details about a single company 

理想的には私がどのhasManycompanyモデルmonthモデルを持っているだろうになります。唯一の問題は、企業が複数の月に現れることです。

私が間違っていると私を訂正しますが、これは、ある企業がすでに店舗にいる場合、新しい月が要求されたときに、その会社のデータをサーバーからではなく店舗から取得することを意味していませんか?データは毎月違うので、私にとってはうまくいかないでしょう。

このアプリケーションでは、各社のIDは実際には、通常の整数IDと選択された月です。ですから、これを回避する方法の1つは、各企業に'15-Mar-2013'のようなIDを与えることです。

また、毎月のcompaniesデータを生のままに渡して、プレーンな配列で変換を行うこともできます。しかし、この問題は、企業の集計(月全体に加えて)を計算しなければならないことです。その2つの事柄を分けておくことは非常にうれしいでしょう。私が完全に別の会社のモデルを持っていたら、モデル内の街に行くことができます:

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 
}); 

あなたはどう思いますか?

+1

会社のデータが毎月異なる場合、そのレコードは会社ではありません。それは 'CompanyReport'か何かです。 –

+0

合意が、まだ - どのように問題を解決するには?任意のidを 'CompanyReport'に割り当てますか? 'CompanyReport'は、本質的に、いくつかのサーバデータセットのフィルタリングされたスナップショットです。 –

答えて

0

あなたのmonth[1]->[N]companyの関係が示しているのは、自分自身の会社が何ヶ月も私には意味をなさない。

あなたが言いたいのは、1ヶ月以内に特定の基準を持つすべての企業を探しているということです。選択された月は検索基準の一部にすぎません。

+0

合意されましたが、それは 'MonthlyReport'のほうが多く、私にとっては意味があります。その場合、どのように問題を解決するには? –

+0

ブックマーク可能なレポートを探しているなら、特定のレポートを特定するために、おそらく "/ companies/reports /:yyyy /:mm"のようなことをします。または「/ reports/periodic /:yyyy /:mm /:reportName」または「/ reports/monthly /:yyyy /:mm /:name」 –

+0

私は月IDを使用しています:yyyy /:mm 'Jan-2013'のようなものになっている)、私はまだ問題の解決方法を知らない。 –

関連する問題