Forum: Ruby on Rails Observers and outside methods

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Mike C. (Guest)
on 2009-03-14 01:21
(Received via mailing list)
I'm thinking about using observers for my situation. Basically
whenever an object is created, I want a message to be sent to a user
via a PM system I made. At the moment this is happening within the
create method of the controller. I tried putting this in a callback in
the model, but it seems methods such as the URLs (users_path) and
current_user don't work in models. Since observers are also a type of
model, I was wondering if these methods don't work in them either?
"Wolas!" (Guest)
on 2009-03-16 17:07
(Received via mailing list)
you can include them in the model if you want. Mybe i get some
screaming for this as models and views should be completely separate
and independent (so if you change the routes, for example, you would
have to change this method, for you its not a problem because you
worte it, but in a project with more people, it would net be a normal
thing to do.

just include ActionView::Helpers::UrlHelper. and you can get methods
like url_for.

I would defenitely put such method in a callback in the model:

after_create :announce
Craig D. (Guest)
on 2009-03-16 17:17
(Received via mailing list)
If what I want to accomplish affects only the model with which I'm
I put the behavior in a callback on the model. If it affects other
models, I put it in an observer. Otherwise, I put it in the controller
some other non-ActiveRecord library code. In those cases where I've
needed a
URL, either I build and use it in the controller, or I build it in the
controller and pass it to the thing that will do the work, e.g., a
mailer or
other notifier.

One reason I wouldn't put notification code in an observer is that it
fire no matter how you create the model: via the normal flow through the
Rails stack, in script/console, etc. I usually only want the
notification if
the work is being done through the web app, not script/console.

Food for thought.


Craig D.
Mutually Human Software
Mike C. (Guest)
on 2009-03-16 22:31
(Received via mailing list)
Oh, ok. Thanks for the replies!
This topic is locked and can not be replied to.