【发布时间】:2014-04-28 03:51:26
【问题描述】:
背景
我在我的项目中使用 Ember Data 的 ActiveModelAdapter 并定义了一些模型,如下所示:
App.GiftCard = DS.Model.extend(
destination: DS.belongsTo('destination', polymorphic: true)
isCampaign: (->
@get('destination.constructor') == App.Campaign
).property()
)
App.Destination = DS.Model.extend()
App.Campaign = DS.Model.extend()
我的礼品卡模型具有作为目的地的多态关系,其中一种类型是 Campaign。
这一切都在应用程序中按预期工作,但现在我正在尝试使用 QUnit 为 isCampaign 行为编写单元测试。我不知道的部分是如何创建礼品卡记录并将活动分配为多态目的地?
我尝试了几种不同的方法。第一个是创建活动记录并将其分配给目标属性:
第一次尝试
campaign = @store.createRecord('campaign', id: 1)
@gift_card = @store.createRecord('gift_card',
id: 1
amount: 100.00
destination: campaign
)
但这给出了错误:
断言失败:您只能向此关系添加“目标”记录
我尝试的另一件事是创建一个目标记录并指定类型:
第二次尝试
campaign = @store.createRecord('destination', id: 1, type: 'campaign')
@gift_card = @store.createRecord('gift_card',
id: 1
amount: 100.00
destination: campaign
)
但在那种情况下,destination.constructor 是App.Destination,这不是我想要的。
其他信息
不管怎样,我的 API 中用于建立关系的 JSON 如下所示:
{
"gift_card":{
"id":1,
"amount":100.0,
"destination":{
"type":"campaign",
"id":5
},
"created_at":"2013-12-10T01:17:30.373Z"
}
}
【问题讨论】:
标签: ember.js coffeescript ember-data polymorphic-associations