Это решение не является поточно-ориентированным, и при обработке двух запросов (A и B) более поздний изменит текущий промежуточный запрос предыдущего пользователя (что было бы почти невозможно отладить и крайне запутало пользователя). *
Сохранить пользователя (или идентификатор пользователя) в хранилище текущего потока.
class User < ActiveRecord::Base
class << self
def current_user
Thread.current[:current_user]
end
def current_user=(user)
Thread.current[:current_user] = user
end
end
end
before_filter :set_current_user
private
def set_current_user
User.current_user = User.find(session[:user_id])
end