# Observer

**URL:** <https://www.ruby-forum.com/t/observer/143653>\
**Category:** Rails\
**Created:** [July 21, 2008, 3:59pm UTC](https://www.ruby-forum.com/t/observer/143653 "2008-07-21T15:59:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![vanight](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/a698b9/32.png) [@vanight](https://www.ruby-forum.com/u/vanight)\
**Post date:** [July 21, 2008, 3:59pm UTC](https://www.ruby-forum.com/t/observer/143653/1 "2008-07-21T15:59:16Z")

</div>

Hi,  
I have to make an observer if a modification is done on 3 differents  
classes  
Hotel, Server, ServerUser.

class HotelObserver \< ActiveRecord::Observer  
observe Hotel, Server, ServerUser

def after\_create(model)  
generate\_hotel\_param\_files  
generate\_hotel\_setup\_files  
end

def after\_update(model)  
generate\_hotel\_param\_files  
generate\_hotel\_setup\_files  
end

…

I need to get the id (hotel id) to make my functions  
generate\_hotel\_param\_files and generate\_hotel\_setup\_files.

is it possible to transmit this parameter to generate\_hotel\_param\_files  
and  
generate\_hotel\_setup\_files,

is it possible to make 3 differents functions  
def after\_create(hotel), def after\_create(server), def  
after\_create(userserver), or do I have to check model class

How can I do that ?

Thanks

---

<div class="post-metadata">

**Author:** ![vanight](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/a698b9/32.png) [@vanight](https://www.ruby-forum.com/u/vanight)\
**Post date:** [July 21, 2008, 11:04pm UTC](https://www.ruby-forum.com/t/observer/143653/2 "2008-07-21T23:04:37Z")

</div>

eh, like so?

def after\_create(model)  
generate\_hotel\_param\_files(model.id)  
generate\_hotel\_setup\_files(model.id)  
end

def after\_update(model)  
generate\_hotel\_param\_files(model.id)  
generate\_hotel\_setup\_files(model.id)  
end

On Jul 21, 9:59 am, David N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![vanight](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/a698b9/32.png) [@vanight](https://www.ruby-forum.com/u/vanight)\
**Post date:** [July 22, 2008, 11:00am UTC](https://www.ruby-forum.com/t/observer/143653/3 "2008-07-22T11:00:03Z")

</div>

Yes, but will it take hotel as the model ?

Jeff Emminger wrote:

> eh, like so?
> 
> def after\_create(model)  
> generate\_hotel\_param\_files(model.id)  
> generate\_hotel\_setup\_files(model.id)  
> end
> 
> def after\_update(model)  
> generate\_hotel\_param\_files(model.id)  
> generate\_hotel\_setup\_files(model.id)  
> end
> 
> On Jul 21, 9:59ï¿½am, David N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![vanight](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/a698b9/32.png) [@vanight](https://www.ruby-forum.com/u/vanight)\
**Post date:** [July 22, 2008, 3:57pm UTC](https://www.ruby-forum.com/t/observer/143653/4 "2008-07-22T15:57:00Z")

</div>

On Jul 22, 5:00 am, David N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Yes, but will it take hotel as the model ?

the argument passed to the observer methods is an instance of whatever  
class the observer belongs to, i.e. HotelObserver methods will be  
given an instance of Hotel. Is this what you mean?
