我正试图在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
记录似乎被推入的friendships
数组-- currentUser
和由model
表示的用户。我不希望这种情况发生,因为对于双向交友系统,model.friendship
数组应该包含与friendship
相反的内容,即与用户和朋友交换。当然,如果Ember有办法自动完成这个任务,那就太好了,但是我也非常乐意手动完成。
现在,为什么pushObject
方法将相同的friendship
记录推入两个用户记录?我想这可能与在模型中定义逆的方式有关。我试着改用inverse: null
,但这并没有解决问题。什么是发生在引擎盖下的余烬-数据是导致这一行为?或者,我的代码中是否有我没有看到过的bug?任何摆脱这种行为的方法都是非常感谢的!
发布于 2014-01-23 03:41:15
解决了!结果发现我需要
App.Friendship = DS.Model.extend
user: DS.belongsTo('user')
friend: DS.belongsTo('user', { inverse: null })
我的直觉是正确的,答案与反向有关,但我一开始并没有把inverse: null
放在正确的位置!
https://stackoverflow.com/questions/21252660
复制相似问题