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