@deadvip

Запись в лог данных из сессии?

Возникла необходимость добавить в лог текущего пользователя. Из множества моделей в лог записываются данные в фильтрах after_create, after_update (поэтому передать объект session из контроллера не получится), из модели доступа к сессии нету. Есть вариант с Thread.current[:current_user] = session[bla-bla] и эта переменная доступна в модели, но, насколько я понял, это работает только для Mongrel сервера, поскольку для каждого пользователя создается свой поток — не пробовал. Вылавливать все места где проходит создание\обновление и записывать лог из контроллеров как-то не очень хочется (их слишком много + в дальнейшем придется добавлять руками). Есть ли решения?
  • Вопрос задан
  • 3038 просмотров
Пригласить эксперта
Ответы на вопрос 1
vsespb
@vsespb
Коллбэки базы данных after_create, after_update лучше использовать только для работы с самой моделью (и базой данных) и не взаимодействовать с внешним миром, т.к. это нарушение MVC. Иначе, по моему опыту, бывают проблемы и похуже Вашей.

Даже наверное ActiveRecord::Observer не стоит использовать.

здесь обсуждается subj и есть вроде какие-то хаки чтобы писать в лог сеиссию из модели

pjkh.com/articles/2009/02/02/creating-an-audit-log-in-rails
stackoverflow.com/questions/133558/good-idea-to-access-session-in-observer-or-not
www.zorched.net/2007/05/29/making-session-data-available-to-models-in-ruby-on-rails/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы