2016-09-08 19 views
0

私には知っているモデルのIDがあります。このモデルに関連付けられたbelongsToのレコードを作成したいと思います。しかし、関連付けられたモデルの最初のクエリではなく、アソシエーションの作成時にIDを提供したいと思います。これは可能ですか?関連するモデルのIDを使用してbelongsTo関連付けを使用してember-dataモデルを作成する方法はありますか?

これは私が仕事(またはその一部の変形)したいものです。

store.createRecord('person', {childId: '1', name: 'billybob'}); 

これは、次のように定義されたモデルのためである:

Person = DS.Model.extend({ 
    name: DS.attr('string'), 
    child: DS.belongsTo('child'), 
}); 

ガイドはこのようなものをお勧め:

store.createRecord('person', {child: child, name: 'billybob'}); 

ここで、childは既にある時点でストアからフェッチされていますまたは新しく作成されたレコードです。

私は、子供がサイドロードして戻ってくることを期待していました。これにより、子エンドポイントを介して常に処理されるため、バックエンドでエンドポイントを子供に直接処理する必要がなくなります。

私たちはバックエンドにIDを与えているだけなので、そのレコードが実際に存在しなければ失敗する必要があります。

私は、次のような様々な置換しようとしました:

store.createRecord('person', {child: {id: '1'}, name: 'billybob'}); 

をし、成功せずに、モデルのシリアライザをカスタマイズしようと試みてきました。

ご協力いただきまして誠にありがとうございます。

+0

既に読み込まれていない場合、どこから正確に子供IDがありますか?あなたの店の中で 'peekRecord'を考慮してください。 – Lux

+0

これはURLの動的セグメントで提供されるIDなので、誰かがリンクから入った場合、モデルはロードされません。私の場合、アソシエーションのID(私の例ではchild_id)はユーザー固有ではないモデルですが、ルートのメインモデル(私の例では人のID)はユーザー固有です。したがって、一般的な関連モデルと一緒に行くユーザー固有のインスタンスが存在しない場合は、そのインスタンスを作成し、同時に非ユーザー固有のモデルをそのインスタンスに関連付ける必要があります。 –

答えて

0

まず、store.push()でレコードを作成することをお勧めします。次に、store.unloadを使用してレコードからストアを削除するか、adapter.shouldReloadRecordがこのレコードのtrueを返して、次回にfindにロードされるようにします。

関連する問題