В моем приложении rails 2 у меня есть страница с фотовыставкой. На этой странице фотошоу есть текстовое поле, в котором посетители могут оставлять комментарии к фотографии.
Если пользователь, который не вошел в систему, вводит комментарий и нажимает «Отправить», я хочу, чтобы появилось наложение входа/регистрации (также известное как модальное). Как только они войдут в систему или зарегистрируются (через нашу собственную авторизацию или соединение FB), я хочу, чтобы модальное окно исчезло, а комментарий был отправлен.
Мой вопрос: как мне справиться с этим, сохраняя код DRY, CRUD и придерживаясь MVC?
Некоторые варианты, которые я рассматривал:
- Передайте текст комментария как скрытое поле в форме входа/регистрации. Сохраните комментарий в сеансе/новом действии. Это не CRUD, а также не работает, если кто-то входит в систему через Facebook.
- Сохраните текст комментария как переменную сеанса, затем после входа в систему, когда страница перезагрузится, определите переменную сеанса в действии фото/шоу и сохраните комментарий. Это не КРУД.
- Сделайте то же самое, что и выше, но определите переменную сеанса в представлении и сохраните комментарий. Это ломает MVC.
- Полностью обработайте вход/регистрацию через AJAX, определите успешный ответ, а затем сделайте вызов, чтобы сохранить комментарий. Это ломает MVC.
Имейте в виду, что такое поведение, когда пользователю предлагается войти в систему после отправки комментария, будет происходить по всему сайту на многих различных типах ресурсов (не только на фотографиях), поэтому СУХОЕ решение важно, если это вообще возможно.