Модель Ember.js будет организована в виде древовидной структуры

Я изучаю Ember.js, используя бэкэнд Rails. Я хочу создать древовидную структуру для связывания модели группы с самой собой (подгруппы). Так как он довольно зрелый, я хотел бы связать гем Ancestry для использования на стороне Ember.

Ancestry добавляет строковый столбец с именем «предки» в мою модель группы и возвращает строку идентификаторов родителей. Как в этом случае подойти к настройке моделей Ember?


person neon    schedule 14.09.2013    source источник


Ответы (1)


Я понял это, немного повозившись с групповым сериализатором и моделью Ember.

# serializers/group_serializer.rb
class GroupSerializer < ActiveModel::Serializer
  attributes :id, :name, :parents, :subgroups

  def parents
    object.ancestor_ids unless object.is_root?
  end

  def subgroups
    object.descendant_ids if object.has_children?
  end
end

# app/javascripts/models/group.js.coffee
App.Group = DS.Model.extend
  name: DS.attr 'string'
  parents: DS.hasMany 'group'
  subgroups: DS.hasMany 'group'
person neon    schedule 14.09.2013
comment
Большое спасибо, что поделились этим! У вас есть пример кода использования этого в шаблоне или часть вашей кодовой базы, которой вы могли бы поделиться в качестве примера репозитория? Работаю над тем же, и я уверен, что это будет полезно сообществу Ember. - person BJ McDuck; 04.04.2014
comment
К сожалению, я не играл с Ember, но с тех пор перестал. Удачи! - person neon; 12.04.2014
comment
Я уже придумал, как это сделать сам. Я использовал jbuilder для настройки правильных данных json, чтобы я мог выполнить загрузку данных Ember. - person BJ McDuck; 12.04.2014