Request global variable

I need information about the user currently logged in available outside of
controllers. At least in models but probably also in some library code.
I don't want to pass the user object around everywhere. That is ugly and
annoying. So I wanted to make it available somewhere globally to a single
request by some before filter that creates the user object from a user id
stores in session.

Global variables are too global. They are outside the scope of a request.
I have tried the above with Thread.current[:user] for the user object. It
seems to work, but is it a good way? I assume a thread may be used for
several requests so if I am not careful the user object may be passed to
some later request? Should I make a after_filter that assigns nil?
Is there a better way to do this?