【问题标题】:Self-referential relationships (friends of users) in ember-dataember-data 中的自引用关系(用户的朋友)
【发布时间】:2014-01-13 06:17:07
【问题描述】:

在 Rails 4.0 后端我有以下内容:

class User < ActiveRecord::Base
  has_many :friendships, dependent: :destroy
  has_many :friends, through: :friendships

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, class_name: User
end

我想把用户的好友列表转成JSON,所以我写了一个序列化器:

class UserSerializer < ActiveModel::Serializer
  embed :ids, include: true
  has_many :friends, include: true

在 ember 方面,我正在尝试使用以下 User 模型加载 JSON:

Nektere.User = DS.Model.extend
  friends: DS.hasMany('user')

但这给了我一个错误

Assertion failed: No model was found for 'friend'
Uncaught TypeError: Cannot set property 'typeKey' of undefined 

它要求我提供 Friend 模型,但 FriendUser。我猜我需要告诉 ember-data friends 数组实际上是 User 记录的数组,但如果 friends: DS.hasMany('user') 不这样做,那我不​​知道该怎么做。如何将此数据结构正确加载到 ember 中?

【问题讨论】:

    标签: ember.js ruby-on-rails-4 ember-data active-model-serializers


    【解决方案1】:

    在 AMS 中,您可以指定根,在您的情况下,您的朋友关系的根将是用户,这样应该可以工作

    has_many :friends, include: true, root: :users
    

    【讨论】:

    • 感谢您的回复!这似乎在 JSON 中侧载了一个users 数组,对应于user 对象中的friend_ids。看起来 ember-data 正在正确读取此内容,但我需要更彻底地对其进行测试。如果我需要侧载两个不同的用户数组,例如:friends:followers,我很好奇这将如何工作?我不能同时拥有两个名为 users 的数组,可以吗?
    猜你喜欢
    • 2020-08-07
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多