Getting access to request.env in a model observer?

Does anyone know how I would get access to the request.env object within a model observer? I'm using restful_authentication to send email, and need to include some of that request data in there.

I have it working with normal ActionMailer stuff, but can't figure out how to do it in an observer.


You can’t. Request information is related to controllers and views and should not be made available to models.

Look at Restful authentication and see how it handles that - they use attr_accessor to store data.

This is a really dumbed-down approach but you could do this:

class ModelObserved < AR::Base

attr_accessor :request_info

rest of your code


class ModelObservedObserver < AR::Observer

observes ModelObserved

def after_save(record)

unless record.request_info.blank?

do stuff with this




Then in your controller you just need to make sure you pass the request.env stuff to the model.

The other way to do it is to use cache_sweepers instead of observers. Acts_as_audited does that so you might learn something from that code.

Thanks - I used an attr_accessor and it seems to do the trick!