В Rails как получить доступ к данным контроллера в модели

сценарий

У меня есть приложение, в котором я хотел бы, чтобы события регистрировались третьей стороной (через пользовательский модуль, использующий Gabba в моих моделях). События генерируются в модели, но код на стороне сервера для генерации событий требует доступа к файлам cookie текущего запроса.

Проблема MVC

Это специализация проблемы, когда модели нужны данные, содержащиеся в контроллере. Оставаясь верным MVC, модель не должна иметь доступа к контроллеру. Ответ, который я видел, используется для передачи значений, необходимых в качестве аргументов модели. Хотя я согласен с этим подходом в большинстве случаев, я не думаю, что это лучшее решение здесь, потому что в целом оно неизвестно и не является задачей контроллера, если модель собирается генерировать событие.

Итак, для конкретного примера:

Представьте себе, что модель "Пользователь" имеет статический метод, называемый "создать". UsersController вызывает метод create с пользовательским хешем. Метод create хочет опубликовать событие "пользователь создал" в Gabba, но ему необходимо разрешить файлы cookie Google Analy tics для текущего запроса.Просто кажется неправильным отправлять куки пользователю # создать.

То, о чем я подумал:

  1. Поместите значения cookie, необходимые модулю метрик, в какое-то глобальное хранилище данных, которое доступно моделям. (Где будет лучшее место?)
  2. Поместите события в какое-то хранилище, и контроллер должен запустить код события в конце обработки запроса.

0 ответов

Другие вопросы по тегам