прости название вопроса; потратил 20 минут, пытаясь написать что-то связное (сомнительно, если получилось).
В любом случае, используя блог в качестве примера, наши модели выглядят так:
Сообщение имеет много комментариев
Комментарий принадлежит к сообщению
Допустим, я хочу добавить новый комментарий: при сохранении комментария мне нужно включить внешний ключ родительского Post (Post.id) в массив данных перед вызовом save.
Потому что я хочу сохранить связь в контексте с пользователем - я
не хочу, чтобы им приходилось выбирать сообщение из поля выбора, чтобы связать комментарий - вот два варианта, которые я вижу:
1) Поместите форму комментария в поле зрения сообщения.
2) передать идентификатор сообщения в качестве аргумента (через GET) в действие Comment.add (или записать / прочитать в / из сеанса); сохранить и
перенаправить обратно на родительский Post.view.
Вариант 1 отлично подходит для блога, но не для профиля пользователя, который может быть
слишком длинная форма для аккуратного включения в представление пользователя.
Вариант 2 работает, я думаю, но мне придется написать некоторые пост-специфические условия отображения / перенаправления в
действие Comments.add, и оно не кажется правильным; из того, что я прочитал, я
должны пытаться поддерживать отношения 1: 1 между контроллерами
и модели.
Является ли № 2 приемлемым в качестве наилучшей практики Web MVC? или есть другой вариант, который я пропускаю?