Похоже, вы нашли ответ на свой вопрос.Может быть, я могу помочь со стороной магистрали:
У магистрали есть 2 конструкции модели: Модель и Коллекция (коллекция просто является списком моделей).Не существует формального способа описания отношений с магистралью (afaik), поэтому вы должны сделать это самостоятельно.Я думаю, что я бы сделал для обработки этой структуры 3 коллекции:
ItemCollection
Коллекция элементов будет содержать все ваши элементы, и каждый элемент, в свою очередь, будет иметь свою собственную коллекцию TagCollection., который содержит связанные с ним модели тегов.
ItemCollection.TagCollection
Содержит ссылки на основной экземпляр TagCollection, но является локальным списком только для этого элемента.Поскольку вы можете '.add' модель в коллекцию, вы можете иметь несколько коллекций с одинаковыми моделями, заполняющими их.
TagCollection
TagCollection содержит ваши теги.Это «основной» список тегов, на который будет ссылаться каждая ItemCollections TagCollection.
Например: у вас есть 3 тега в вашем TagCollection и 2 элемента.
- item_1.TagCollection имеет tag_Aи tag_B
- item_2.TagCollection имеет tag_A и tag_C
Если к item_1 добавлен tag_C, вы просто: item_1.TagCollection.add (tag_C) Аналогично, удаливitem_1.TagCollection.remove (tag_C) удалит его из коллекции item_1, но не из других.
Независимо от используемых вами методов, вам потребуется написать некоторый код, чтобы он мог выполнять массовые обновления /создает.Помните, что магистраль просто передает список атрибутов в виде строки JSON в теле запроса, когда выполняет синхронизацию.Неважно, что он посылает.Итак, если ваш контроллер настроен на прием списка (1 или более) в его методе create, вы сможете сделать это довольно просто, выполнив TagCollection.create ([список тегов]).Трудной частью было бы переопределить синхронизацию магистрали для успешного создания и превратить [список тегов] в отдельные модели для коллекции.
Надеюсь, это поможет!