1

残り火、残り火データ 1.0、レール、rabl

サーバーから返される次のjsonがあります:

    {
     "日":{
       "id":5,   
       "支出":[{
           "id":10,
           "expense_type":{
             "name":"とても悲しい",
             "id":2
           }
         }、
         {...}
       ]
     }
    }

私は次の残り火モデルを持っています:

    Expense.Day = DS.Model.extend
      支出: DS.hasMany('支出')

    Expense.Expenditure = DS.Model.extend
      日: DS.belongsTo('日')
      経費タイプ: DS.belongsTo('expenseType')

    Expense.ExpenseType = DS.Model.extend
      名前: DS.attr('文字列')
      支出: DS.hasMany('支出')

そして、EmbeddedRecordsMixin を使用して各モデルに ActiveModelSerializer を使用します。

    Expense.DaySerializer = Expense.ApplicationSerializer.extend DS.EmbeddedRecordsMixin,
      属性:
        支出: {embedded: 'always'}

    Expense.ExpenditureSerializer = Expense.ApplicationSerializer.extend DS.EmbeddedRecordsMixin,
      属性:
        費用の種類: {embedded: 'always'}
        day: {embedded: 'always'}

    Expense.ExpenseTypeSerializer = Expense.ApplicationSerializer.extend DS.EmbeddedRecordsMixin,
      属性:
        支出: {embedded: 'always'}

日と支出は適切にロードされますが、expense_type はロードされません。デバッグのために console.log と super() を使用して各シリアライザー merhod 抽出物に挿入し、DaySerializer のみが実行されたことを確認します。私がどうかしましたか、まずいことでもありましたか?私は Ember =(

4

1 に答える 1

1

問題は、私の残り火データの理解にあります。EmbeddedRecordsMixin のソース コードを調べたところ、hasMany の関係のみを埋め込むことができることがわかりました。

この問題は、expend_type_id ノードを支出項目に追加するだけで解決します。

{
 "day":{
   "id":5,   
   "expenditures":[{
       "id":10,
       "expense_type_id": 2
     }, 
     {...}
   ]
 }
}

/expense_types/2 の GET リクエストを処理し、モデルをロードします。それで全部です!

于 2014-07-13T09:52:12.900 に答える