Макет приложения
Я создаю приложение, в котором можно создавать опросы. Каждый опрос имеет несколько вопросов. Я включаю вопросы в модель опроса (с embeds_many
в Mongoid), поэтому опрос может выглядеть следующим образом:
{
"id": "4f300a68115eed1ddf000004",
"title": "Example Survey",
"questions":
[
{
"id": "4f300a68115eed1ddf00000a",
"title": "Please describe your experience with backbone.js",
"type": "textarea"
},
{
"title": "Do you like it?",
"id": "4f300a68115eed1ddf00000b",
"type": "radiobutton",
"options": ["Yes", "Yes, a lot!"]
}
]
}
Теперь есть также редактор опроса, который состоит из SurveyView
, который отображает опрос и перечисляет вопросы. Если я нажму на один вопрос, появится QuestionView
, где я могу отредактировать вопрос. И когда я удовлетворюсь опросом и нажму кнопку Сохранить, SurveyModel
будет отправлено на сервер.
проблема
Каков наилучший способ обработки встроенной ассоциации?
Если я передам survey.get("questions")[any_index]
в QuestionView
, и вопрос будет изменен, я должен вручную найти question.id
в моей модели и обновить свою модель. Это неправильно.
Если я создам QuestionsCollection
в моем SurveyModel
(это вообще возможно?). Затем я могу сделать что-то вроде извлечения Question
из этой коллекции по id, передать его в представление, и когда я изменю модель, все будет обновлено автоматически, но я должен указать url
в коллекции, и Backbone будет отправлять отдельные вопросы на сервер, если что-то обновляется.
Любое предложение о том, как сделать это магистральным способом?