我正在尝试在Ember实施一个友情关系系统,这是一种多对多的关系。我的模特是:
App.User = DS.Model.extend
name: DS.attr('string')
friendships: DS.hasMany('friendship', { inverse: 'user' })
App.Friendship = DS.Model.extend
user: DS.belongsTo('user')
friend: DS.belongsTo('user')
在我的用户控制器中,我有一个addFriend
操作看起来大致相似(我从其他地方定义了currentUser
):
App.UserController = Ember.ObjectController.extend
actions:
addFriend: ->
friendship = @get('store').createRecord('friendship',
user: @get('currentUser')
friend: @get('model')
)
@get('currentUser.friendships').pushObject(friendship)
从调试语句中,似乎friendship
记录被推送到 BOTH friendships
的{{1}}数组中,而currentUser
表示的用户}}。我不希望这种情况发生,因为对于双向友好系统,model
数组应该包含model.friendship
的反转,即用户和朋友交换。当然如果Ember有办法自动完成这项工作会很好,但我也非常乐意手动完成。
目前,为什么friendship
方法将相同的pushObject
记录推送到两个用户记录中?我想这可能与模型中定义的反转方式有关。我尝试更改为friendship
,但这并没有解决问题。引发此行为的ember-data引发了什么?或者我的代码中有一个我没见过的错误?任何摆脱这种行为的方法都将非常感激!
答案 0 :(得分:1)
解决!事实证明我需要
App.Friendship = DS.Model.extend
user: DS.belongsTo('user')
friend: DS.belongsTo('user', { inverse: null })
我直截了当地认为答案与反转有关,但我最初没有将inverse: null
放在正确的位置!